Avatar billede ulrik-nielsen Nybegynder
26. september 2004 - 23:49 Der er 5 kommentarer og
1 løsning

SQL Kald retunere samme række flere gange som svar?

Hvorfor giver dette kald samme række som svar, flere gange??

SELECT tabel_users.id AS delid
FROM
tabel_users,
tabel_forum,
tabel_news,
tabel_comments,
tabel_trips,
tabel_tripusers
WHERE
tabel_comments.user != tabel_users.id
AND tabel_forum.user != tabel_users.id
AND tabel_news.user != tabel_users.id
AND tabel_tripusers.byuser != tabel_users.id
AND tabel_trips.skipper != tabel_users.id
AND tabel_trips.makeuser != tabel_users.id
AND tabel_users.id NOT IN(tabel_trips.users)
AND tabel_users.level = '0'
ORDER BY tabel_users.id ASC
Avatar billede arne_v Ekspert
26. september 2004 - 23:51 #1
Skal de "!=" ikke være "=" ?
Avatar billede mountmedia Nybegynder
26. september 2004 - 23:53 #2
eller måske "SELECT DISTINCT tabel_users.id AS delid" ?
Avatar billede ulrik-nielsen Nybegynder
27. september 2004 - 00:13 #3
Arne: Nej det skal være "=". Dvs. at dit indlæg fik mig til indse en stor fejl jeg havde lavet.
Formålet med kaldet er at det skal se om værdien af tabel_users.id er i nogen af rækkerne. Samtidig skal være skal tabel_users.level = '0'.
Hvis tabel_users.id ikke findes i nogen af rækkerne skal tabel_users.id retuneres som et svar.
Bagefter skal disse id's bruges i en DELETE

Jeg har lavet kaldet om så jeg skulle mene at det virkede.. men det gør det ikke. Kan I se fejlen?:

SELECT tabel_users.id AS delid
FROM
tabel_users,
tabel_forum,
tabel_news,
tabel_comments,
tabel_trips,
tabel_tripusers
WHERE
NOT (tabel_comments.user = tabel_users.id
OR tabel_forum.user = tabel_users.id
OR tabel_news.user = tabel_users.id
OR tabel_tripusers.byuser = tabel_users.id
OR tabel_trips.skipper = tabel_users.id
OR tabel_trips.makeuser = tabel_users.id
OR tabel_users.id IN(tabel_trips.users))
AND tabel_users.level = '0'
ORDER BY tabel_users.id ASC
Avatar billede arne_v Ekspert
27. september 2004 - 00:20 #4
Jeg er ikke sikker men prøv:

SELECT tabel_users.id AS delid
FROM
((((tabel_users LEFT JOIN tabel_forum ON tabel_forum.user = tabel_users.id)
LEFT JOIN tabel_news ON tabel_news.user = tabel_users.id)
LEFT JOIN tabel_comments ON tabel_comments.user = tabel_users.id)
LEFT JOIN tabel_trips tabel_trips.skipper = tabel_users.id)
LEFT JOIN tabel_tripusers ON tabel_tripusers.byuser = tabel_users.id
WHERE tabel_users.level = '0' AND
tabel_forum.user IS NULL AND
tabel_news.user IS NULL AND
tabel_comments.user IS NULL AND
tabel_trips.skipper IS NULL AND
tabel_tripusers.byuser IS NULL
ORDER BY tabel_users.id ASC
Avatar billede ulrik-nielsen Nybegynder
27. september 2004 - 01:19 #5
Det virker sq!
Mange tak! Smid et svar!
Avatar billede arne_v Ekspert
27. september 2004 - 05:55 #6
svar
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