schwierige SQL

  • Hi Leute

    ich kämpfe seit 2 Tagen mit einer Abfrage die ich nicht hinbekomme.

    Da ich aber schon die Frage selbst nicht formulieren kann, kann mir auch google nicht helfen.

    Was will ich wissen?

    Ich will einige Daten aus Tabelle_1 auslesen ABER NUR!!! wenn in Tabelle_2 die Spalte group !=1 ist

    group kann allerdings auch mit 2-5 gefüllt sein. Diese Daten will ich aber nicht



    Code
    1. select k.k_id,k.k_name,k.konto,k.kudos,k.kapital,
    2. FROM_UNIXTIME(k.create_time) as Gründung from table_1 as k
    3. Left Join table_2 as m on m.k_id = k.k_id
    4. where m.group not in (1)
    5. group by k.k_id
    6. order by konto DESC;


    vielleicht hat einer ne Idee



    LG

    michi

    It's me, only me, pure michi

    RS 500 SAS G8 Ostern 2019

    VPS: 50 G7 |B Ostern 2017|200 G8 Aktion

    WH: SmallEi | Adv17 Webhosting Spezial Family | Expert Spezial 2016

  • NUR!!! wenn in Tabelle_2 die Spalte group !=1 ist

    group kann allerdings auch mit 2-5 gefüllt sein. Diese Daten will ich aber nicht

    Nur, wenn in Tabelle 2 group != 1 verstehe ich, aber was möchtest du mir mit dem 2-5 und dass du diese Daten dann nicht willst, sagen?


    Noch wichtig zu wissen:

    Was soll sein, wenn group NULL ist oder in Tabelle 2 kein passender Verweis gefunden wird?

    Was ist am aktuellen Resultset mit deiner Query unpassend?

  • Hi, was genau funktioniert denn nicht?

    Ich sehe eigentlich nur eine nicht genau definierte Column konto in der letzten Zeile. Also entweder

    SQL
    1. SELECT k.k_id, k.k_name, k.konto, k.kudos, k.kapital, FROM_UNIXTIME(k.create_time) AS Gründung FROM table_1 AS k
    2. LEFT JOIN table_2 AS m ON m.k_id = k.k_id
    3. WHERE m.group NOT IN (1)
    4. GROUP BY k.k_id
    5. ORDER BY k.konto DESC;

    oder etwas vereinfacht

    SQL
    1. SELECT k.k_id, k.k_name, k.konto, k.kudos, k.kapital, FROM_UNIXTIME(k.create_time) AS Gründung FROM table_1 AS k, table_2 AS m
    2. WHERE m.k_id = k.k_id
    3. AND m.group NOT IN (1)
    4. GROUP BY k.k_id
    5. ORDER BY k.konto DESC;
  • Nur, wenn in Tabelle 2 group != 1 verstehe ich, aber was möchtest du mir mit dem 2-5 und dass du diese Daten dann nicht willst, sagen?


    Noch wichtig zu wissen:

    Was soll sein, wenn group NULL ist oder in Tabelle 2 kein passender Verweis gefunden wird?

    Was ist am aktuellen Resultset mit deiner Query unpassend?

    Danke dass du dich damit beschäftigst :)

    group hat entweder 1-5 oder ist nicht vorhanden

    Beispiel :

    in group sind Ränge der Mitglieder

    1 ist Admin

    2 ist Co-Admin

    3 ist user usw.

    wenn kein Admin vorhanden ist, will ich die dazugehörigen Daten aus Tabelle 1 sehen

    Alle Daten die einen Admin haben will ich nicht.


    Das aktuelle query zeigt mir trotzdem alle Daten und nimmt einfach group=2 oder 3

    was er halt zuerst findet.......


    Ich hoffe das ist etwas vertsändlicher ;)

    It's me, only me, pure michi

    RS 500 SAS G8 Ostern 2019

    VPS: 50 G7 |B Ostern 2017|200 G8 Aktion

    WH: SmallEi | Adv17 Webhosting Spezial Family | Expert Spezial 2016

  • Das heißt die Beziehung von Tabelle 1 zu Tabelle 2 ist 1:cn

    Zu einem Eintrag in Tabelle 1 (k) können 0 bis mehrere Einträge in Tabelle 2 (m) sein (ich habe erst jetzt gesehen, dass m eine Spalte k_id hat), richtig?


    Und du möchtest die Daten aus Tabelle 1, wenn diese Entität (die in Tabelle 1 gespeichert ist) keine Benutzer (Entität, die in Tabelle 2 gespeichert ist) o.ä. mit der Rolle Admin (group=1) zugeordnet hat, richtig? Aber eigentlich sind dir die Einträge aus Tabelle 2 egal

  • Das heißt die Beziehung von Tabelle 1 zu Tabelle 2 ist 1:cn

    Zu einem Eintrag in Tabelle 1 (k) können 0 bis mehrere Einträge in Tabelle 2 (m) sein (ich habe erst jetzt gesehen, dass m eine Spalte k_id hat), richtig?


    Und du möchtest die Daten aus Tabelle 1, wenn diese Entität keine Benutzer o.ä. mit der Rolle Admin (group=1) zugeordnet hat, richtig? Aber eigentlich sind dir die Einträge aus Tabelle 2 egal

    ja genau Tabelle2 ist nur der Filter

    It's me, only me, pure michi

    RS 500 SAS G8 Ostern 2019

    VPS: 50 G7 |B Ostern 2017|200 G8 Aktion

    WH: SmallEi | Adv17 Webhosting Spezial Family | Expert Spezial 2016

  • SQL
    1. SELECT k.k_id, k.k_name, k.konto, k.kudos, k.kapital, FROM_UNIXTIME(k.create_time) AS Gründung FROM table_1 AS k, table_2 AS m
    2. WHERE m.k_id = k.k_id
    3. AND k.k_id NOT IN (SELECT k_id FROM table_2 WHERE group = 1)
    4. GROUP BY k.k_id
    5. ORDER BY k.konto DESC;