Geht folgendes ohne Subqueries



  • Gruppe | ID
    -------------
      A    | 3
      A    | 4
      B    | 2
      B    | 1
      C    | 1
      D    | 4
      E    | 7
      A    | 1
      F    | 1
      A    | 2
    

    Jetzt will ich alle IDs, wenn sie gemeinsam in mehreren Gruppen sind, also mit UND Verknüpft.
    z.B. in Gruppe
    A und B und C. => ID = 1
    A und B => ID 1, 2
    A und D => ID 4
    A und E => keine
    (immer nur eine Verknüpfung pro Abfrage, nicht alle auf einmal)
    Die Gruppen können beliebig verknüpft werden und beliebig viele sein.

    Geht das ohne Subqueries?



  • Queries automatisch zusammenbauen ist OK.



  • Mit einer festen Anzahl an Gruppen wäre es möglich:

    //Kombination A und D
    SELECT list1.id
    FROM tabelle AS list1, tabelle AS list2
    WHERE list1.id=list2.id 
    AND list1.gruppe='A' AND list2.gruppe='D'
    
    //Kombination A, B und C
    SELECT list1.id
    FROM tabelle AS list1, tabelle AS list2,tabelle AS list3
    WHERE list1.id=list2.id AND list1.id=list3.id
    AND list1.gruppe='A' AND list2.gruppe='B' AND list3.gruppe='C'
    

    (eventuell kannst du auch einen INNER JOIN verwenden)



  • OK. Intern verwendet das aber wahrscheinlich auch wieder mehrere selects um an die "Listen" zu kommen, oder?



  • autorun schrieb:

    OK. Intern verwendet das aber wahrscheinlich auch wieder mehrere selects um an die "Listen" zu kommen, oder?

    Nein, ein Kreuzprodukt 😃
    (btw, hat es einen besonderen Grund, daß du etwas gegen Subqueries hast? Wenn du der Datenbank Arbeit abnehmen willst, hol dir doch die komplette Tabell und werte sie von Hand aus - dürfte aber etwas aufwendiger sein als das, was SQL anbietet)



  • mir wurde gesagt die sind zu langsam


Anmelden zum Antworten