Avatar billede superb Nybegynder
24. juli 2008 - 22:22 Der er 15 kommentarer og
1 løsning

mysql joins problem

jeg har et problem, jeg har nedenstående kode, hvor jeg skal hente titler fra en database, de steder hvor isbn nummeret matcher den anden, men der sker ikke noget.

$query = mysql_query('SELECT serieboeger.isbn, books.titel FROM serieboeger, books WHERE books.isbn = serieboeger.isbn AND serieboeger.id = 1');

while ($row = mysql_fetch_array($query))
{
print_r($row);
}
Avatar billede kjeldsted Novice
24. juli 2008 - 22:50 #1
Hvorfor skriver du "FROM serieboeger, books WHERE". Din tabel hedder vel ikke ´serieboeger, books´...
Avatar billede erikjacobsen Ekspert
24. juli 2008 - 23:10 #2
Det kan man nu godt i nogle SQL-udgaver. Men den rigtigste er nok alligevel:

  SELECT serieboeger.isbn, books.titel FROM serieboeger JOIN books ON books.isbn = serieboeger.isbn WHERE serieboeger.id = 1

Når du siger "men der sker ikke noget" - hvad betyder det så helt præcist?

Og hvad med at fange en eventuel fejl:

  $query = mysql_query('SELECT ...') or die(mysql_error());
Avatar billede jakobdo Ekspert
25. juli 2008 - 05:33 #3
erik: Er der forskel på JOIN og INNER JOIN ?
Avatar billede erikjacobsen Ekspert
25. juli 2008 - 09:27 #4
Det bør være det samme. INNER JOIN anbefales, men med JOIN alene sparer man 6 bytes i SQL-forespørgslen.

;)
Avatar billede jakobdo Ekspert
25. juli 2008 - 10:05 #5
:o)
Avatar billede superb Nybegynder
25. juli 2008 - 18:08 #6
hm det virker ikke, med "der sker ikke noget" mener jeg at siden er blank og det er den stadig.
Avatar billede jakobdo Ekspert
25. juli 2008 - 19:27 #7
Prøv at vis hele din kode.
Avatar billede superb Nybegynder
25. juli 2008 - 21:14 #8
selvfølgelig, den kommer her. Jeg forstår simpelthen ikke hvor jeg laver fejl.
<?
function con_db() {
mysql_connect ("server","brugernavn","password");
mysql_select_db ("dbnavn");
}
con_db();

$query = mysql_query('SELECT serieboeger.isbn, books.titel FROM serieboeger JOIN books ON books.isbn = serieboeger.isbn WHERE serieboeger.id = 1');
$print_r($query);
while ($row = mysql_fetch_array($query))
{
print_r($row);
}
?>

Og databaserne består af felterne:
serieboeger: isbn og id
books: isbn, titel, forfatter

og det hele ligger så på http://www.vilibellus.dk/beta/serier.php
Avatar billede jakobdo Ekspert
25. juli 2008 - 21:55 #9
Prøv at ret til:

$query = mysql_query('SELECT serieboeger.isbn, books.titel FROM serieboeger JOIN books ON books.isbn = serieboeger.isbn WHERE serieboeger.id = 1') or die(mysql_error());
while ($row = mysql_fetch_array($query))
{
print_r($row);
}
?>
Avatar billede erikjacobsen Ekspert
25. juli 2008 - 22:08 #10
Det kan være visning af fejl er slået fra på den webserver du bruger. Det bør slåes til mens du udvikler.
Avatar billede zarbosch Nybegynder
27. juli 2008 - 16:16 #11
Eller der ikke er en fejl!

serieboeger.id = 1  eller serieboeger.id = '1' ?

eller måske er books.isbn = serieboeger.isbn ikke ens når serieboeger.id = 1
Avatar billede superb Nybegynder
27. juli 2008 - 18:30 #12
jeg føler mig lidt dum, havde ikke fået kopieret de rigtige værdier over i databasen, men super lækkert i gad lære mig lidt om joins, erik og zarbosh smider i ikke et svar. Tusind tak for hjælpen.
Avatar billede zarbosch Nybegynder
27. juli 2008 - 19:38 #13
Held og lykke med projektet superb.
Avatar billede erikjacobsen Ekspert
27. juli 2008 - 19:50 #14
Ingen point til mig, tak.
Avatar billede zarbosch Nybegynder
29. juli 2008 - 00:18 #15
Hvorfor bede om svar hvis du ikke ønskede at give point....
Avatar billede superb Nybegynder
03. august 2008 - 21:29 #16
sorry, var et sted uden internet i et par dage.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester