Avatar billede !asp Nybegynder
07. marts 2000 - 19:07 Der er 6 kommentarer og
1 løsning

Hvordan laver jeg SELECT der vælger alt fra tabel som ikke findes i anden tabel?

Hvordan laver jeg en SELECT der vælger alt fra en tabel som ikke findes i en anden tabel?

Denne funker ikke:
SELECT ID FROM Tilbud,mail_log_tilbud WHERE mail_log_tilbud.TilbudID <> Tilbud.ID
Avatar billede jkn Nybegynder
08. marts 2000 - 08:53 #1
har du prøvet Eksist ?
select id from tilbud
where tilbudid not Eksist in
  select tilbudid from
    mail_log_tilbud
DB2:
SELECT id FROM tilbud
WHERE tilbudid not IN (SELECT tilbudid FROM mail_log_tilbud)

eller lign
John
P.S. Jeg ved selvfølig ikke om din DB overhoved kan håndtere EKSIST
Avatar billede baunsgaard Nybegynder
08. marts 2000 - 09:29 #2
Prøv med

SELECT ID
FROM Tilbud
WHERE ID NOT IN (SELECT TilbudID FROM mail_log_tilbud)

Mvh
Avatar billede !asp Nybegynder
08. marts 2000 - 10:00 #3
kan MySQL det?
Avatar billede baunsgaard Nybegynder
08. marts 2000 - 10:05 #4
Jeg har aldrig brugt MySQL, men det er standard ANSI SQL syntaks...
Avatar billede !asp Nybegynder
08. marts 2000 - 11:26 #5
Jeg har fundet en løsning:

Php3 kode:
<?php
    $SQL = "select ID from Tilbud LEFT JOIN mail_log_tilbud ON Tilbud.ID = mail_log_tilbud.TilbudID where mail_log_tilbud.TilbudID is NULL";
    $RS = mysql_db_query($db_name, $SQL);
    while ($RSarray = mysql_fetch_row($RS)) {
        print $RSarray[0]."<BR>";
    }
?>

Jeg vil meget gerne have forklaret hvad den gør:

select ID from Tilbud LEFT JOIN mail_log_tilbud ON Tilbud.ID = mail_log_tilbud.TilbudID where mail_log_tilbud.TilbudID is NULL

Det er især denne jeg er i tvivl om:
LEFT JOIN mail_log_tilbud ON Tilbud.ID = mail_log_tilbud.TilbudID

Hvad gør den?  (point tallet er hævet til 100)
Avatar billede baunsgaard Nybegynder
08. marts 2000 - 11:39 #6
Min metode var nemmere, men ok!

Forestil dig to tabeller

A (ID, Letter1)
1  A
2  D
3  F
5  K

b (ID, Letter2)
1 J
2 K
4 L
5 A

SELECT * FROM A LEFT JOIN B ON A.ID=B.ID giver følgende
1 A J
2 D K
3 F    ; Bemærk ingen værdi fra B
5 K A

SELECT * FROM A RIGHT JOIN B ON A.ID=B.ID giver følgende
1 A J
2 D K
4  L    ; Bemærk ingen værdi fra A
5 K A

SELECT * FROM A OUTER JOIN B ON A.ID=B.ID giver følgende
1 A J
2 D K
3 F    ; Bemærk ingen værdi fra B
4  L    ; Bemærk ingen værdi fra A
5 K A

SELECT * FROM A INNER JOIN B ON A.ID=B.ID giver følgende
1 A J
2 D K
5 K A

Det du så laver er den første selectsætning og tester på om der findes en værdi fra B, hvis ikke - ja, så findes den ikke i B

Mvh
Avatar billede !asp Nybegynder
08. marts 2000 - 11:46 #7
Din SQL I MySQL:
SELECT ID FROM Tilbud WHERE ID NOT IN (SELECT TilbudID FROM mail_log_tilbud)
Giver:
1064:You have an error in your SQL syntax near 'SELECT TilbudID FROM mail_log_tilbud)' at line 1

Så den funker desværre ikke i MySQL.
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