kostenloser Webspace werbefrei: lima-city


Komplexe SQL-Joins

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    schrotti12

    Moderator Kostenloser Webspace von schrotti12

    schrotti12 hat kostenlosen Webspace.

    Hallo liebe Leute.
    Ich habe folgendes Datenbank-Schema und sollte darauf eine Abfrage starten.
    http://schrotti12.lima-city.de/media/div/schema.png
    Es geht darum, dass ich eine client-id bekomme und dazu alle Programme aus allen Profilen brauche, die dem Client zugeordnet sind.
    Dafür wird es wohl auf eine verschachtelte Query rauslaufen, wobei ich damit noch nicht viel Ahnung habe. Aktuell frage ich nur die zugeordneten Profile ab:
    SELECT * FROM clients_have_profiles
    LEFT OUTER JOIN clients ON clients_have_profiles.clients_id = clients.id
    LEFT OUTER JOIN profiles ON clients_have_profiles.profiles_id = profiles.id;

    Where-Clause fehlt hier noch...
    Noch zum Background: Profile haben n Programme und einem Client können mehrere Profile zugeordnet sein. Was ich eben brauche ist eine Liste aller zugeordneter Programme. Diese kann Duplikate enthalten. Das macht nix. Das werde ich dann mit einem "Distinct" oder in der Businesslogik filtern...
    Wäre toll wenn mir da jemand einen Hinweis geben könnte bzw. eine Anleitung für derartige Joins kennt.
    Danke!
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. slashadmincms

    slashadmincms hat kostenlosen Webspace.

    Hi,

    deine Joins sind ja schonmal garnicht so verkehrt :D

    versuche mal folgendes:
    SELECT programname FROM programs
    LEFT OUTER JOIN profiles_have_programs AS php ON php.programs_id = programs.id
    LEFT OUTER JOIN clients_have_profiles AS chp ON chp.profiles_id = php.profiles_id
    WHERE chp.clients_id = <CLIENT_ID>


    (wobei <CLIENT_ID> dann eben die ClientID ist, die du bekommst).

    Der grundlegende Unterschied ist, dass du ja nach Programmen fragst. Daher geht der SELECT über die Tabelle programs.
    Im Beispiel wird jetzt nur der Name ausgegeben, aber das ist natürlich beliebig anpassbar. Die WHERE Klausel geht dann über die Bedingung, in diesem Fall der Filter nach der client id.

    Ich hoffe das hilft dir weiter!

    Viele Grüße
  4. Autor dieses Themas

    schrotti12

    Moderator Kostenloser Webspace von schrotti12

    schrotti12 hat kostenlosen Webspace.

    Genau das hab ich gebraucht. Vielen Dank, damit ist mir sehr geholfen!
    Thema kann damit auch schon wieder geschlossen werden, danke!
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!