Herzlich willkommen im Archiv vom ABAKUS Online Marketing Forum
Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.
Code: Alles auswählen
SELECT *
FROM a
LEFT JOIN b ON (a.id = b.a_id AND b.typ = 'x')
WHERE b.id IS NULL
Code: Alles auswählen
select * from a,b where nummer is null and a.id=b.a_id
Das funktioniert leider nicht, da es ja durchaus Einträge mit Nummern in b zu dem Namen geben darf - nur eben nicht mit dem Typ 'x'.straka hat geschrieben:ich mach das meistens so:
Code: Alles auswählen
select * from a,b where nummer is null and a.id=b.a_id
Auch das reicht leider nicht - hier kriege ich ja nur die Namen zu denen es Nummern gibt, die nicht vom Typ 'x' sind. Namen ohne Nummern werden übergangen.JohnBi hat geschrieben:select a.name from a,b where b.typ!='x' AND a.id=b.a_id
das müsste das bewirken was du suchst...
Das Query dürfte eigentlich gar nix zurück liefern, denn es ist ja effektiv das vorige + die Einschränkung dass die Nummer leer sein muss.JohnBi hat geschrieben:select a.name from a,b where b.typ!='x' AND a.id=b.a_id AND nummer=''
Zwischen a und b bestehet eine 1-zu-n-Beziehung. 1 Name in a hat zwischen 0 und unendlich vielen Nummern in b zugeordnet (wobei jede Nummer von einem anderen Typ ist).JohnBi hat geschrieben:so, natürlich wäre nicht schlecht wenn du uns sagen würdest wie du "ohne Nummern" definierst ob da ne 0 drinne steht oder NULL oder nichts
Natürlich... dummerweise muss das ganze auch auf MySQL 4.0.* laufen - also ohen Subqueriesnet(t)worker hat geschrieben:die Fragestellung ist ja garnicht so einfach, ich vermute fast das es nur über ein subrequest gehen wird...
das problem ist ja das es in b mehrere datensätze geben kann für jede id in a, also muss man ermitteln welche a_id einen datensatz für Typ=x haben und diese dann nicht ausgeben...
also in etwa so...
select * from a where id not in(select a_id from b where typ ="x"; );
da ich selber noch nie mit einem subrequest gearbeitet habe, kann ich nicht sagen ob es so auch geht oder die syntax richtig ist...
Code: Alles auswählen
SELECT *
FROM a
LEFT JOIN b ON b.id = a.id AND b.typ = 'x'
WHERE a.id IS NULL
Zeile 3 ist vermutlich ein Tippfehler und sollte b.a_id heißen, oder?DZVO hat geschrieben:gibt dir nun alle a.id's zurück die in b nicht mit x markiert sindCode: Alles auswählen
SELECT * FROM a LEFT JOIN b ON b.id = a.id AND b.typ = 'x' WHERE a.id IS NULL
Code: Alles auswählen
SELECT a.id
FROM a
LEFT JOIN b ON b.a_id = a.id AND b.typ = 'x'
WHERE b.a_id IS NULL
Code: Alles auswählen
id | textfield
1 | foo 1
2 | foo 2
3 | foo 3
4 | foo 4
Code: Alles auswählen
a_id| typ
1 | x
3 | x
4 | y