Avatar billede aske2 Nybegynder
11. januar 2015 - 21:33 Der er 4 kommentarer og
1 løsning

Problem med select

Hej eksperter

Jeg har lavet en forholdsvis simpel MySQL database. Jeg forsøger nu at teste relationer osv. ved hjælp af nogle SELECTs, men...

Når jeg forsøger at eksekvere nedenstående, så får jeg følgende fejlmeddelelse: #1242 - Subquery returns more than 1 row

SELECT name FROM author WHERE anum =
(SELECT anum FROM author_book WHERE isbn =
(SELECT isbn FROM book WHERE title = "Database system concepts")
);

Ja den SKAL også returnere mere end 1 række, og jeg troede netop, det var meningen, men hvad pokker er problemet her?

Det er mange år siden, jeg sidst har 'rodet med' den her slags, og dengang var jeg heller ikke ekspert ;)

Jeg håber, én af jer kan hjælpe mig videre. På forhånd tak og fortsat god aften :)
Avatar billede erikjacobsen Ekspert
11. januar 2015 - 21:59 #1
Jeg tror du skal læse lidt op på din databaseteori. Det der er ikke en normal SQL-sætning. Måske du mener JOIN ???

Men ellers, i princippet, så er det måske mere i retning af

SELECT name FROM author WHERE anum IN
(SELECT anum FROM author_book WHERE isbn ....................
Avatar billede aske2 Nybegynder
11. januar 2015 - 22:08 #2
Det burde jeg i den grad Erik - det står slet ikke til diskussion :)

Jeg hjælper faktisk bare min søn, men nu har jeg i den grad fået lyst til at lære mere.

Nej jeg har heller ikke set en lignende SELECT sætning, når jeg har surfet rundt, men den virker faktisk - ja altså ikke lige den sætning (der returnerer flere), men en anden tilsvarende, der kun returnerer en række.

Det hjalp med IN i stedet for =, og nu returneres der korrekt, så tak for det :)

Hvis du har tid - og lyst - må du da gerne skrive en KORREKT SELECT sætning, der gør det samme :)

Smid et svar, så får du point, og jeg lukker spørgsmålet, for det virker nu
Avatar billede erikjacobsen Ekspert
11. januar 2015 - 22:13 #3
Ingen point til mig tak. Svar selv, og accepter dit eget svar.

Der er en del man skal lære om databaser og SQL. Generelt: det er bedre med join end subselects - selv om subselects virker nemmere at at forstå.

Men det har jeg ikke lige nu mulighed for at hjælpe med.... ;(
Avatar billede aske2 Nybegynder
11. januar 2015 - 22:26 #4
Jamen fuld forståelse for det og 1000 tak for hjælpen :)

Jeg gør et hurtigt forsøg med en inner join, så må vi se, om jeg har held med det ;)
Avatar billede aske2 Nybegynder
11. januar 2015 - 23:11 #5
Jeg gjorde det vist - en multiple inner join with a where clause :D

Det virker i hvert fald, og det var ved egen hjælp, så jeg er meget stolt nu ;)

SELECT author.name
FROM author
INNER JOIN author_book
on author.anum=author_book.anum
INNER JOIN book.isbn
on author_book.isbn=book.isbn
WHERE title = "Database system concepts"
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
Computerworld tilbyder specialiserede kurser i database-management

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