Teobald Skrevet 31. mars 2008 Skrevet 31. mars 2008 (endret) Får ikke noe resultat når jeg prøver å hente ut informasjon om en busstur. Det fungerer fint så lenge jeg har enten fra eller til holdeplass, men da jeg ønsker å vise begge to støter jeg på problemer... Feilen er vel at både "tur.fra" og "tur.til" er satt til å være lik "holdeplass.navn". Noen som kunne hjelpe meg litt med denne? Jeg har to tabeller: 1. tur id | fra | til Eks: 1 | 3 | 10 2 | 6 | 12 3 | 2 | 9 2. holdeplass id | navn Eks: 1 | Holdeplass 1 2 | Holdeplass 2 3 | Holdeplass 3 4 | Holdeplass 4 osv $sql = "SELECT * FROM tur, holdeplass WHERE tur.fra = holdeplass.id AND tur.til = holdeplass.id // Denne ORDER BY holdeplass.fra, tur.id "; $result = mysql_query($sql, $link); if (!$result) { die('Det oppstod en feil: ' . mysql_error()); } else { while ($row = mysql_fetch_assoc($result)) { echo "ID " . $row['id']; echo "Fra " . $row['navn']; echo "Til " . $row['navn']; // Dette blir jo feil ? } } Endret 31. mars 2008 av Teobald
Ekko Skrevet 31. mars 2008 Skrevet 31. mars 2008 (endret) Det spørringen din sier er: Vis meg alle turer hvor både tur.fra og tur.til er lik holdeplass.id. Når dette uttrykket evalueres brukes kun en verdi for holdeplass.id av gangen. Det du spør etter er altså: Vis meg alle turer som går fra et sted til samme stedet. (Prøv å legg inn en tur fra holdeplass 1 til holdeplass 1 så vil du se den kommer opp) Hvis du skriver litt tydeligere hva du ønsker å få tilbake fra spørringen din kan jeg kanskje hjelpe deg om du ikek finner ut av det selv. BTW: ORDER BY holdeplass.fra, tur.id Er denne linjen riktig eller har du byttet om holdeplass og tur her? Endret 31. mars 2008 av Ekko
Ekko Skrevet 31. mars 2008 Skrevet 31. mars 2008 (endret) Jeg tror jeg ser hva du er ute etter. Prøv denne: mysql> select * from tur; +------+------+------+ | id | fra | til | +------+------+------+ | 1 | 1 | 2 | | 2 | 1 | 3 | | 3 | 1 | 4 | | 4 | 2 | 1 | | 5 | 2 | 3 | | 6 | 2 | 4 | | 7 | 3 | 1 | | 8 | 3 | 2 | | 9 | 3 | 4 | | 10 | 4 | 1 | | 11 | 4 | 2 | | 12 | 4 | 3 | | 12 | 4 | 4 | +------+------+------+ 13 rows in set (0.00 sec) mysql> select * from holdeplass; +------+-----------+ | id | navn | +------+-----------+ | 1 | Bergen | | 2 | Oslo | | 3 | Trondheim | | 4 | Stavanger | +------+-----------+ 4 rows in set (0.00 sec) mysql> SELECT * FROM tur LEFT JOIN holdeplass AS h1 ON tur.fra=h1.id LEFT JOIN holdeplass AS h2 ON tur.til=h2.id ; +------+------+------+------+-----------+------+-----------+ | id | fra | til | id | navn | id | navn | +------+------+------+------+-----------+------+-----------+ | 1 | 1 | 2 | 1 | Bergen | 2 | Oslo | | 2 | 1 | 3 | 1 | Bergen | 3 | Trondheim | | 3 | 1 | 4 | 1 | Bergen | 4 | Stavanger | | 4 | 2 | 1 | 2 | Oslo | 1 | Bergen | | 5 | 2 | 3 | 2 | Oslo | 3 | Trondheim | | 6 | 2 | 4 | 2 | Oslo | 4 | Stavanger | | 7 | 3 | 1 | 3 | Trondheim | 1 | Bergen | | 8 | 3 | 2 | 3 | Trondheim | 2 | Oslo | | 9 | 3 | 4 | 3 | Trondheim | 4 | Stavanger | | 10 | 4 | 1 | 4 | Stavanger | 1 | Bergen | | 11 | 4 | 2 | 4 | Stavanger | 2 | Oslo | | 12 | 4 | 3 | 4 | Stavanger | 3 | Trondheim | | 12 | 4 | 4 | 4 | Stavanger | 4 | Stavanger | +------+------+------+------+-----------+------+-----------+ 13 rows in set (0.00 sec) Endret 31. mars 2008 av Ekko
Teobald Skrevet 31. mars 2008 Forfatter Skrevet 31. mars 2008 Det spørringen din sier er: Vis meg alle turer hvor både tur.fra og tur.til er lik holdeplass.id. Når dette uttrykket evalueres brukes kun en verdi for holdeplass.id av gangen. Det du spør etter er altså: Vis meg alle turer som går fra et sted til samme stedet. (Prøv å legg inn en tur fra holdeplass 1 til holdeplass 1 så vil du se den kommer opp) Hvis du skriver litt tydeligere hva du ønsker å få tilbake fra spørringen din kan jeg kanskje hjelpe deg om du ikek finner ut av det selv. BTW: ORDER BY holdeplass.fra, tur.id Er denne linjen riktig eller har du byttet om holdeplass og tur her? Der var det nok byttet om, ja... Riktig skal være holdeplass.id, tur.id Du har helt rett i at spørringen min er feil. Det jeg ønsker er å hente navnet på de to holdeplassene fra 'holdeplass'. (istedefor id til holdeplass som er lagret i tabellen 'tur'). Eks: ID | fra | til 1 | 3 | 10 Ønsker jeg skal hente respektive navn fra tabell 'holdeplass' og printes slik: ID 1 Fra: Arendal Til: Oslo
Ekko Skrevet 31. mars 2008 Skrevet 31. mars 2008 Da er det altså denne du er ute etter: mysql> SELECT tur.id,h1.navn,h2.navn FROM tur LEFT JOIN holdeplass AS h1 ON tur.fra=h1.id LEFT JOIN holdeplass AS h2 ON tur.til=h2.id ; +------+-----------+-----------+ | id | navn | navn | +------+-----------+-----------+ | 1 | Bergen | Oslo | | 2 | Bergen | Trondheim | | 3 | Bergen | Stavanger | | 4 | Oslo | Bergen | | 5 | Oslo | Trondheim | | 6 | Oslo | Stavanger | | 7 | Trondheim | Bergen | | 8 | Trondheim | Oslo | | 9 | Trondheim | Stavanger | | 10 | Stavanger | Bergen | | 11 | Stavanger | Oslo | | 12 | Stavanger | Trondheim | | 12 | Stavanger | Stavanger | +------+-----------+-----------+ 13 rows in set (0.01 sec)
Teobald Skrevet 31. mars 2008 Forfatter Skrevet 31. mars 2008 Da er det altså denne du er ute etter: mysql> SELECT tur.id,h1.navn,h2.navn FROM tur LEFT JOIN holdeplass AS h1 ON tur.fra=h1.id LEFT JOIN holdeplass AS h2 ON tur.til=h2.id ; +------+-----------+-----------+ | id | navn | navn | +------+-----------+-----------+ | 1 | Bergen | Oslo | | 2 | Bergen | Trondheim | | 3 | Bergen | Stavanger | | 4 | Oslo | Bergen | | 5 | Oslo | Trondheim | | 6 | Oslo | Stavanger | | 7 | Trondheim | Bergen | | 8 | Trondheim | Oslo | | 9 | Trondheim | Stavanger | | 10 | Stavanger | Bergen | | 11 | Stavanger | Oslo | | 12 | Stavanger | Trondheim | | 12 | Stavanger | Stavanger | +------+-----------+-----------+ 13 rows in set (0.01 sec) Dette ser veldig riktig ut :-) Hvordan får jeg nå printet ut de to holdeplassene? Blir det slik: echo $row['h1.navn']; echo $row['h2.navn'];
Ekko Skrevet 31. mars 2008 Skrevet 31. mars 2008 Er jo bare å prøve. Funker det ikke kan vi se om vi finner en annen løsning.
Teobald Skrevet 31. mars 2008 Forfatter Skrevet 31. mars 2008 Er jo bare å prøve. Funker det ikke kan vi se om vi finner en annen løsning. Det fungerte ikke..
Teobald Skrevet 31. mars 2008 Forfatter Skrevet 31. mars 2008 (endret) Slik ser det ut hos meg nå: <?php $link = mysql_connect('localhost', '*****', '******'); if (!$link) { die('Kunne ikke koble til: ' . mysql_error()); } mysql_select_db('******') or die('Kunne ikke velge databasen'); $sql = "SELECT tur.id, h1.navn, h2.navn FROM tur LEFT JOIN holdeplass AS h1 ON tur.fra = h1.id LEFT JOIN holdeplass AS h2 ON holdeplass.til = h2.id "; $result = mysql_query($sql, $link); if (!$result) { die('Det oppstod en feil: ' . mysql_error()); } else { while ($row = mysql_fetch_assoc($result)) { echo "FRA: " . $row['h1.navn'] . "<br />"; echo "TIL: " . $row['h2.navn'] . "<br />"; echo "<hr />"; } } ?> Endret 31. mars 2008 av Teobald
Ekko Skrevet 31. mars 2008 Skrevet 31. mars 2008 (endret) Prøv denne, da skal det vel gå greit mysql> SELECT tur.id,h1.navn AS Fra ,h2.navn AS Til FROM tur LEFT JOIN holdeplass AS h1 ON tur.fra=h1.id LEFT JOIN holdeplass AS h2 ON tur.til=h2.id ; +------+-----------+-----------+ | id | Fra | Til | +------+-----------+-----------+ | 1 | Bergen | Oslo | | 2 | Bergen | Trondheim | | 3 | Bergen | Stavanger | | 4 | Oslo | Bergen | | 5 | Oslo | Trondheim | | 6 | Oslo | Stavanger | | 7 | Trondheim | Bergen | | 8 | Trondheim | Oslo | | 9 | Trondheim | Stavanger | | 10 | Stavanger | Bergen | | 11 | Stavanger | Oslo | | 12 | Stavanger | Trondheim | | 12 | Stavanger | Stavanger | +------+-----------+-----------+ 13 rows in set (0.00 sec) mysql> Da kan du bruke ['Fra'] og ['Til'] Evt kan du vel gjøre en print_r($row) for å se hva kolonnene heter i arrayen din. Mulig du da ser at du kan bruke $row[1] og $row[2], husker ikke helt. Endret 31. mars 2008 av Ekko
Teobald Skrevet 31. mars 2008 Forfatter Skrevet 31. mars 2008 Nå fungerer det utmerket. Tusen takk for hjelpen Ekko!
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå