Mark: Join im php-script

Guten Morgen!

Ich komme einfach mit einem vermeindlich simplen join-Syntax nicht weiter und wende mich nach endlosen Versuchen an euch.
Per php-script auf einem webserver (apache) versuche ich mich daran, zwei tabellen zu verbinden.

Die 1.Tabelle heißt alle1, die 2. Tabelle heißt alle2

Das gleich benannte Feld in beiden Tabellen lautet "idnummer", hier sollten also Inhaltstechnisch Übereinstimmungen zu finden über den join zu finden sein.

Ich möchte folgendes:
Wähle all die Datensätze aus "alle1" aus, bei denen der Inhalt der Spalte "idnummer" mit dem Inhalt der spalte "idnummer" aus alle2 übereinstimmt.

Mein Ansatz:
"SELECT alle1.Titel, alle2.idnummer FROM alle1 INNER JOIN ON alle1.idnummer = alle2.idnummer"

Die Fehlermeldung:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ON...

  1. Hallo,

    Wähle all die Datensätze aus "alle1" aus, bei denen der Inhalt der Spalte "idnummer" mit dem Inhalt der spalte "idnummer" aus alle2 übereinstimmt.

    Mein Ansatz:
    "SELECT alle1.Titel, alle2.idnummer FROM alle1 INNER JOIN ON alle1.idnummer = alle2.idnummer"

    gib hinter INNER JOIN an, mit welcher Tabelle Du die Tabelle "alle1" joinen willst, siehe SELFHTML aktuell, Einführung in Joins.

    Freundliche Grüße

    Vinzenz

    1. Danke! Das hat mir sehr geholfen...ich glaube, ich hätte noch den ganzen Tag nach dem Fehler gesucht!

  2. moin,

    Wähle all die Datensätze aus "alle1" aus, bei denen der Inhalt der Spalte "idnummer" mit dem Inhalt der spalte "idnummer" aus alle2 übereinstimmt.

    Vinzenz hat dich ja schon auf den fehlenden tabellen-namen beim JOIN hingewiesen. ich will dir noch einen weiteren hinweis mit auf den weg geben, obwohl latent die gefahr besteht, dass du ihn gar nicht mehr ließt. den tipp, den ich dir geben will, wird vielen hier schon aus den ohren kommen. trotzdem ist er wichtig, nämlich JOINS sind böse.

    die aussage klingt auf der ersten blick ein wenig "aggresiv", stimmt aber im kern. JOINS sollte man immer mit bedacht einsetzen. und wenn ich mir anschaue, was du haben willst, nämlich eigentlich nur daten der tabelle alle1, dann machst du einen methodischen fehler diese tabelle mit alle2 (nicht gerade sinnvolle tabellen namen) zu JOINEN. auch wenn im ergebnis das gleiche rauskommst, so wäre es besser mit einer unterabfrage zu arbeiten.

    SELECT alle1.Titel, alle1.idnummer
    FROM alle1
    WHERE EXISTS (SElECT NULL
                  FROM alle2
                  WHERE alle2.idnummer = alle1.idnummer
                 )
    ;

    das gibt deine frage besser wieder, weil unabhängig von der beziehung der beiden tabellen du immer nur die anzahl der datensätze aus tabelle alle1 bekommst, die du auch haben willst. bei einem JOIN besteht immer die latente gefahr, dass sich aufgrund der beziehung zwischen den tabellen die anzahl der datensätze in der ergebnismenge vervielfältigt. mit der unterabfrage kann dieses probleme -> NIE <- auftreten und ist deswegen der methodisch besser weg.

    ich habe fertig.....

    Ilja

    1. Hi!

      den tipp, den ich dir geben will, wird vielen hier schon aus den ohren kommen. trotzdem ist er wichtig, nämlich JOINS sind böse.
      die aussage klingt auf der ersten blick ein wenig "aggresiv", stimmt aber im kern. JOINS sollte man immer mit bedacht einsetzen.

      Formulier ihn doch einfach richtig aus, dann ist er vielleicht auch einsichtiger: Joins ergeben unerwartete Ergebnisse, wenn man sie nicht richtig anwendet. Meist sind korrellierte Subquerys die bessere, weniger problematische Wahl.

      Lo!

      1. moin,

        Formulier ihn doch einfach richtig aus, dann ist er vielleicht auch einsichtiger: Joins ergeben unerwartete Ergebnisse, wenn man sie nicht richtig anwendet. Meist sind korrellierte Subquerys die bessere, weniger problematische Wahl.

        ja, so klingt es sehr einläuchtend und klar formuliert. aber "Joins sind böse" klingt so schön dramatisch.....

        Ilja

        1. Hi!

          aber "Joins sind böse" klingt so schön dramatisch.....

          Ja, dramatisch nichtssagend und so kurz ausgedrückt ist er außerdem nicht richtig. Wir hatten ja vor kurzem eine ähnliche Diskussion zu einem anderen Thema. Es gibt Situationen, die sich (effizient) nur mit Joins lösen lassen. Solch ein kurzer Spruch mag als Gedächtnisstütze gut geeignet sein, aber erst nachdem man verstanden hat, warum das so ist. So allein jedenfalls bringt er nichts.

          Lo!

          1. moin,

            So allein jedenfalls bringt er nichts.

            er stand ja nicht alleine, wo also siehst du das problem ?

            Ilja

            1. Hi!

              So allein jedenfalls bringt er nichts.
              er stand ja nicht alleine, wo also siehst du das problem ?

              Hier nicht. Aber bestimmt das eine oder andere Mal in der vergangenen Postings ...

              Lo!

              1. moin,

                Hier nicht. Aber bestimmt das eine oder andere Mal in der vergangenen Postings ...

                ja vielleicht, wobei ich eigentlich immer probiere es aufzulösen, was damit gemeint ist. Joins sind ja nicht per definition böse, sondern es ist deren benutzung.

                Ilja