Avatar billede kratluskeren Nybegynder
30. marts 2004 - 13:39 Der er 22 kommentarer og
1 løsning

MySQL: Slå op i to tabeller. Hent det id der kun findes i den ene

Hej

Hvordan formulerer jeg en SQL sætning der slår op i to tabeller og udtrækker de id'er der kun findes i den ene tabel.

DVS.
Tabel A: 1, 2, 3, 4, 5, 6
Tabel B: 1, 4, 5

SQL'en skal levere en record set udfra id 2, 3, 6 da disse mangler.

Dette må kunne formuleres udelukkende i SQL - kan det ikke det?
Avatar billede cesil Nybegynder
30. marts 2004 - 14:06 #1
prøv noget a'la
select id form tabela where id not in (select id from tabelb)
Avatar billede phineas_phreak Nybegynder
30. marts 2004 - 14:07 #2
SQL = "SELECT tabel1.A, tabel2.B FROM tabel1, tabel2 WHERE tabel1.A <> tabel2.B;"

er det sådan noget ?
Avatar billede phineas_phreak Nybegynder
30. marts 2004 - 14:08 #3
eller når du mener tabeller mener du så 2 kolonner i én tabel ?
Avatar billede hmortensen Nybegynder
30. marts 2004 - 14:11 #4
phineas_phreak:
Dit SQL kald vil returnere ALLE mulige kombinationer, da du ikke joiner tabellerne...
Avatar billede phineas_phreak Nybegynder
30. marts 2004 - 14:15 #5
så tror jeg at jeg har misforstået spørgsmålet
Avatar billede phineas_phreak Nybegynder
30. marts 2004 - 15:00 #6
Så vidt jeg kan forstår ønsker du at udskrive samtlige poster hvor tabelA <> tabelB korrekt ?

burde det så ik kunne gøres sådan her :

SQL = "SELECT DISTINCT(tabel1.id), id FROM brugere, tabel2 WHERE tabel1.id <> tabel2.id"
Avatar billede phineas_phreak Nybegynder
30. marts 2004 - 15:00 #7
og bemærk at der IKKE skal være mellemrum mellem <>
Avatar billede phineas_phreak Nybegynder
30. marts 2004 - 15:01 #8
agh og id FROM brugere, tabel2 skal selvfølgelig være

id FROM tabel1, tabel2 men det har du vel regnet ud ;)
Avatar billede kratluskeren Nybegynder
30. marts 2004 - 15:31 #9
Cesil, dit første svar ser fornuftigt ud, men jeg kan ikke helt få det til at virke.
Mine tabeller hedder faktisk:
aav_menu - indeholder id
aav_pages - indeholder menuID
Hvis jeg sletter et menupunkt skal jeg finde de sider der har et ugyldigt menuID

SQL:
SELECT aav_pages.menuID
FROM aav_pages
where aav_pages.menuID
not
in (
select aav_menu.id
FROM aav_menu
)
You have an error in your SQL syntax near 'select aav_menu.id FROM aav_menu)
Avatar billede cesil Nybegynder
30. marts 2004 - 15:42 #10
Det burde se sådan ud
SQL = "SELECT aav_pages.menuID FROM aav_pages where aav_pages.menuID not in (select aav_menu.id FROM aav_menu)"
Avatar billede kratluskeren Nybegynder
30. marts 2004 - 15:48 #11
Ja, men det var jo også det samme jeg skrev ovenfor :)
Blot som en mere overskuelig opstilling da jeg tester i phpMyAdmin, men SQL'en er den samme.

Jeg får stadig samme besked:
You have an error in your SQL syntax near 'select aav_menu.id FROM aav_menu)
Avatar billede phineas_phreak Nybegynder
30. marts 2004 - 15:51 #12
har du prøvet min løsning ?
Avatar billede kratluskeren Nybegynder
30. marts 2004 - 16:06 #13
Yeps! ;)
Avatar billede kratluskeren Nybegynder
30. marts 2004 - 16:06 #14
ehm nej mener jeg
Avatar billede kratluskeren Nybegynder
30. marts 2004 - 16:08 #15
Ah jow, det har jeg prøvet, men denne leverer ikke det korrekte resultat phineas_phreak
Avatar billede cesil Nybegynder
30. marts 2004 - 16:11 #16
måske det ikke hedder not in i mysql.
Avatar billede cesil Nybegynder
30. marts 2004 - 16:16 #17
prøv lige det her
SQL = "SELECT aav_pages.menuID FROM aav_pages where aav_pages.menuID <> (select aav_menu.id FROM aav_menu)"
Avatar billede cesil Nybegynder
30. marts 2004 - 16:22 #18
hvilken verion mysql kører du? subselects understøttes først fra version 4.1
Avatar billede kratluskeren Nybegynder
30. marts 2004 - 16:26 #19
Det er vist: v 3.23.58
Kører på et b-one webhotel.

Jamen så er det sq nok derfor :)
Ok så må jeg bare fifle en anden løsning sammen. Havde bare håbet det hele kunne formuleres i en og samme sætning.
Avatar billede kratluskeren Nybegynder
30. marts 2004 - 17:08 #20
cesil, den giver faktisk den samme fejl så det er nok ikke understøttet
Avatar billede kratluskeren Nybegynder
30. marts 2004 - 23:17 #21
Er der andre måder at formulere det på i SQL?
Avatar billede cesil Nybegynder
31. marts 2004 - 08:12 #22
Avatar billede kratluskeren Nybegynder
31. marts 2004 - 21:33 #23
Takker, jeg fimder ud af noget :)
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
Kurser inden for grundlæggende programmering

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