Lukas der kranke: Wie gehe ich hier am besten mit Joins um?

Guten Tag,

ich habe folgende Tabellen: x(1-4)

  • x1
    id wert1 wert2
    0  200   50

  • x2
    id things
    0  x3

  • x3
    id name      things
    1  TheKiller 0

  • x4
    id x2id x3id x1id
    0  0    1    0

Ich hoffe man kann erkennen das:
"The Killer" steht in der Tabelle x3, das ist auch in x2 nochmal angegeben, und es gehört der wer 200 und 50 dazu, das erkennt man in x4.
Die Abfrage heißt also wörtlich:

Gebe mir x1id aus x4
wo (x2id = x3.things und x3id=x3.id WO x3.name='The Killer')
Gebe mir anschließend  wert1 und wert2 von x1
wo id=x1id

Sind die Tabellen so okay?
Wie packe ich das alles in eine Abfrage? Mit Joins?

mfg
Lukas

  1. Guten Abend,

    Wie packe ich das alles in eine Abfrage? Mit Joins?

    Ja, mit JOINS!

    SELECT ....
      FROM x4
      JOIN x3 ON x3.Id = x4.x3Id
      JOIN x2 ON x2.Id = x4.x2Id
      JOIN x1 ON x1.Id = x4.x1Id
      WHERE x3.Name = 'TheKiller'

    Was hast du denn selbst schon versucht?

    Ciao, Frank

    1. Hey bist du sicher das das richtig ist?

      SELECT ....
        FROM x4
        JOIN x3 ON x3.Id = x4.x3Id
        JOIN x2 ON x2.Id = x4.x2Id
        JOIN x1 ON x1.Id = x4.x1Id
        WHERE x3.Name = 'TheKiller'

      Also nach SELECHT würde ich ja in dem Fall wert1 und wert2 hinschreiben, hab ich auch gemacht aber trotzdem krieg ich die nicht..

      Hier nochmal die alte Tabelle

      • x1
        id wert1 wert2
        0  200   50

      • x2
        id things
        0  x3

      • x3
        id name      things
        1  TheKiller 0

      • x4
        id x2id x3id x1id
        0  0    1    0

      Ich habe als vorgabe x3.namen und will dazu die werte wert1 und wert2.

      Probiert schon 1000 varianten aber ich kenn mich mit joins null aus, so endete das ganze dann auch immer dementsprechend obwohl ich mich die ganze zeit shcon damit beschäftige udn versuche das alles zu verstehen.

      lg Lukas

      1. Probiert schon 1000 varianten

        Na dann präsentier doch wenigstens mal eine davon.

        Ein meinem Beispiel habe ich dir angegeben, wie die Tabellen zusammen-gejoint werden und wie man Felder aus den einzelnen beteiligten Tabellen notiert/referenziert.

        Also nach SELECHT würde ich ja in dem Fall wert1 und wert2 hinschreiben

        Vielleicht noch mit x1. jeweils davor? Und was passiert dann?

        Ciao, Frank

        1. Hi.

          Na dann präsentier doch wenigstens mal eine davon.

          SELECT x1.wert1, x1.wert2
          FROM x4
          INNER JOIN (x2 INNER JOIN x3 ON x3.id = x4.x3id) ON x2.ID = x4.x2id
          WHERE x3.name="TheKiller";

          Also nach SELECHT würde ich ja in dem Fall wert1 und wert2 hinschreiben

          Vielleicht noch mit x1. jeweils davor? Und was passiert dann?

          Klappt auch nicht,

          Ciao

          Lukas

          1. Hallo,

            INNER JOIN (x2 INNER JOIN x3 ON x3.id = x4.x3id) ON x2.ID = x4.x2id

            hatte ich irgendwas von Klammern von meinem Beispiel erwähnt? Wo kommen die dann also her?

            Klappt auch nicht,

            ist keine Fehlerangabe!

            Ciao, Frank

            1. Hallo.

              hatte ich irgendwas von Klammern von meinem Beispiel erwähnt? Wo kommen die dann also her?

              Du wolltest wissen was ich denn sonst schon(ich habe damit verstanden abgesehen von deinem vorschlag) schon probiert habe..

              Klappt auch nicht,

              ist keine Fehlerangabe!

              Das weiß ich auch, nur es kommt keine Fehlermeldung (trotz Angabe von "or die ("Fehler <br/>".mysql_error())" . ich hab das auch an der richtigen stelle.
              Es ist einfach so das dass ergebnis leer ist.

              Bye

              Phil Z.

              1. Hallo

                hatte ich irgendwas von Klammern von meinem Beispiel erwähnt? Wo kommen die dann also her?

                Du wolltest wissen was ich denn sonst schon(ich habe damit verstanden abgesehen von deinem vorschlag) schon probiert habe..

                kennst Du schon unsere Join-Artikel?
                Einführung in Joins.
                Fortgeschrittene Jointechniken.

                Letzerer informiert Dich auch über Klammersetzung :-)

                Freundliche Grüße

                Vinzenz