Jag har 2 tabeller
en med ID och Nummer
och en med ID och 2 Nummer
:D
Saken är den att i ena ligger en komplett lista och i den andra en lista över vissa av värderna i den första tabellen..
Typ
Tabell 1
ID Nummer
1 1
2 3
3 5
4 8
5 19
6 32
osv.
och tabell 2
ID Nummer
1 1
2 3
3 8
4 32
Jag vill lista ALLA i Tabel 1 som inte finns i Tabell 2
Hur gör man det lättast? (utan att slå ihop tabellerna)
LarsGMedlem sedan dec. 200012 464 inlägg select t1.*
from t1 left join t2
on t1.nummer = t2.nummer
where t2.nummer is null
aasahMedlem sedan mars 20034 471 inlägg Re: lista ur 2 tabeller
henrikjohansson skrev:
Jag har 2 tabeller
en med ID och Nummer
och en med ID och 2 Nummer
:D
Saken är den att i ena ligger en komplett lista och i den andra en lista över vissa av värderna i den första tabellen..
Typ ....
Dina exempeltabeller stämmer inte med något av detta? :q Tabell 2 har två kolumner, inte tre. Dessutom finns det värden i tabell 2 som inte finns i tabell 1, och det stämmer inte med att den andra tabellen innehåller en del av värdena i den första... Vad menar du egentligen? :q
LarsG skrev:
select t1.*
from t1 left join t2
on t1.nummer = t2.nummer
where t2.nummer is null
Kan du förklara vad du gör? :q
Jag tycker det ser ut som att du gör en join över null-värden?!?
t2.nummer ska vara null och lika med t1.nummer. ==> Både t1s och t2s nummer kolumn ska vara null? Varför? Det verkar ju inte finnas några null-värden i tabellen? :q
LarsGMedlem sedan dec. 200012 464 inlägg Om man enbart tar frågan utan where-villkor så får man
t1.ID t1.Nummer t2.id t2.nummer
1 1 1 1
2 3 2 3
3 5 <null> <null>
4 8 3 8
5 19 <null> <null>
6 32 4 32
och efter det att where-villkoret evaluerats blir det
t1.ID t1.Nummer t2.id t2.nummer
3 5 <null> <null>
5 19 <null> <null>
dvs de nummer som finns i t1 men inte i t2.
Normalt sett brukar man skriva en sådan fråga som
select * from t1 where nummer not in (
select nummer from t2)
men det stöds inte av Mysql. Varianten med en outer join är inte ekvivalent men ger oftast samma resultat.
aasahMedlem sedan mars 20034 471 inlägg Tack, LarsG! :)
Finns det inte stöd för mängdoperatorer heller? Dvs funkar inte följande:
Select * from tabell1
except
Select * from tabell2;
?
LarsGMedlem sedan dec. 200012 464 inlägg Nej. (Det är ganska få DBMS som har stöd för except.)