Guten Morgen,
seit gestern Abend versuche ich vezweifelt, eine Abfrage zu gestalten, die mir anfangs so simple schien. Doch wie ich mich auch anstrenge, ich bleibe gedanklich immer hängen. Vielleicht kann mir jemand von euch helfen oder sagen, dass es nicht möglich ist
Teil der Tabelle train_allocations:
Nun will ich wissen, welche train_id auf bestimmte, kombinierte category_id zutreffen.
Beispiel:
Vorgegeben sind die category_id 17 und 11
In diesem Fall müsste das Ergebnis 4 sein, da nur die train_id 4 auf beide category_id zutrifft.
Beispiel 2:
Vorgegeben sind die category_id 17, 39 und 15
In diesem Fall müsste das Ergebnis 1, 2 und 4 sein, da diese drei train_id die gesuchten category_id haben.
An sich klingt das doch total einfach, nicht wahr? Und trotzdem hänge ich und hänge ich und hänge ich. Gruppieren geht nicht. Auch habe ich versucht, das über einen self join zu lösen, doch hier bin ich ebenfalls gescheitert.
Die Notlösung ist natürlich, über OR abzufragen und dann per PHP zu filtern. Jedoch bin ich in meiner Naivität davon überzeugt, dass es auch eine SQL-Lösung gibt. Irgendwo.
Vielen Dank fürs Lesen. Und noch mehr fürs Helfen
pb
seit gestern Abend versuche ich vezweifelt, eine Abfrage zu gestalten, die mir anfangs so simple schien. Doch wie ich mich auch anstrenge, ich bleibe gedanklich immer hängen. Vielleicht kann mir jemand von euch helfen oder sagen, dass es nicht möglich ist
Teil der Tabelle train_allocations:
Code:
train_id | category_id ---------------------------- 1 | 17 1 | 29 1 | 39 1 | 15 1 | 16 2 | 17 2 | 14 2 | 39 2 | 15 3 | 39 3 | 11 4 | 89 4 | 17 4 | 11 4 | 39 4 | 15
Beispiel:
Vorgegeben sind die category_id 17 und 11
In diesem Fall müsste das Ergebnis 4 sein, da nur die train_id 4 auf beide category_id zutrifft.
Beispiel 2:
Vorgegeben sind die category_id 17, 39 und 15
In diesem Fall müsste das Ergebnis 1, 2 und 4 sein, da diese drei train_id die gesuchten category_id haben.
An sich klingt das doch total einfach, nicht wahr? Und trotzdem hänge ich und hänge ich und hänge ich. Gruppieren geht nicht. Auch habe ich versucht, das über einen self join zu lösen, doch hier bin ich ebenfalls gescheitert.
Die Notlösung ist natürlich, über OR abzufragen und dann per PHP zu filtern. Jedoch bin ich in meiner Naivität davon überzeugt, dass es auch eine SQL-Lösung gibt. Irgendwo.
Vielen Dank fürs Lesen. Und noch mehr fürs Helfen
pb
Kommentar