[SQL allgemein] 2 Tabellen, 2mal "id" - Wie unterscheiden?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [SQL allgemein] 2 Tabellen, 2mal "id" - Wie unterscheiden?

    Hi,
    wenn ich 2 Tabellen habe welche beide eine Spalte mit dem Namen "id" beinhalten und ich eine mysql Abfrage starte welche mit den beiden id's der Tabellen eine Where Abfrage ermöglichen, habe ich dort eine Möglichkeit die id's zu unterscheiden, außer Sie umzubenennen?

    PHP-Code:
    // z.B. so ?
    SELECT tabelle1.idtabelle2.id FROM tabelle1tabelle2 Where tabelle1.id tabelle2.id 

  • #2
    Also langsam reicht's. Bitte das Forum nicht für Grundlagenunterricht mißbrauchen

    Suchst du bitte nach Alias. Und das nächste mal bitte zunächst Grundlagen lernen, erst dann fragen. Danke.

    Kommentar


    • #3
      Original geschrieben von asp2php
      Also langsam reicht's. Bitte das Forum nicht für Grundlagenunterricht mißbrauchen

      Suchst du bitte nach Alias. Und das nächste mal bitte zunächst Grundlagen lernen, erst dann fragen. Danke.
      Ich meine es im Zusammenhang mit JOINs

      Kommentar


      • #4
        Einfach mal ausprobieren soll auch schon Wunder offenbart haben.

        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
        Wie man Fragen richtig stellt

        Kommentar


        • #5
          guckst du hier. da steht alles.

          peter
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Kommentar


          • #6
            Original geschrieben von Kropff
            guckst du hier. da steht alles.

            peter
            Ich rede nicht von normalen Joins oder einer normalen where abfrage, sondern ob man in einer JOIN abfrage auch eine zweite Abfrage, eine WHERE abfrage einbauen kann.
            Natürlich ist es unvorteilhaft, aber es geht um das wissen und nicht um die Funktionalität.

            Kommentar


            • #7
              Dann bilde dich und lies das MySQL-Manual. Da steht alles drin.
              (Und wie ich gerade sehe auf Kropffs Seite auch. Wer lesen kann ist klar im Vorteil.)

              Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

              bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
              Wie man Fragen richtig stellt

              Kommentar


              • #8
                Es steht aber nichts darüber drin,
                ob bei einer fetch_object - while ausgabe man die einzelnen tabellennamen auch unterscheiden kann wie ich angedeutet hatte.
                PHP-Code:
                echo $row->tabelle1.id 
                So kann man die ID's nicht auseinanderhalten.
                Auf der Site von Kropff ist dies nirgends beschrieben und ich bin bislang auch nicht darauf gestoßen.

                Kommentar


                • #9
                  Du hättest vielleicht anmerken sollen, dass du kein Problem mit dem Query, sondern mit der Ausgabe von eben dessen Resultset in PHP hast.

                  fetch_assoc funktioniert in dem Fall nicht. Es wird nur eine von beiden Spalten zurück gegeben.
                  Wie fetch_object das handhabt weiß ich nicht, das benutze ich nie.
                  Mit fetch_row funktioniert es aber z.B.
                  Ich persönlich benenne die Spalten um und verwende weiterhin fetch_assoc.

                  Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                  bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                  Wie man Fragen richtig stellt

                  Kommentar


                  • #10
                    Original geschrieben von ghostgambler
                    Du hättest vielleicht anmerken sollen, dass du kein Problem mit dem Query, sondern mit der Ausgabe von eben dessen Resultset in PHP hast.

                    fetch_assoc funktioniert in dem Fall nicht. Es wird nur eine von beiden Spalten zurück gegeben.
                    Wie fetch_object das handhabt weiß ich nicht, das benutze ich nie.
                    Mit fetch_row funktioniert es aber z.B.
                    Ich persönlich benenne die Spalten um und verwende weiterhin fetch_assoc.
                    Ich hatte zuvor auch immer die Spaltennamen umbenannt.
                    Die Spalte "id" in der Tabelle "tabelle1" hieß dann bei mir: "tabelle1_id"
                    Das wollte ich jedoch umgehen weil ich es einfach zu doof fand.
                    Ich hatte überhaupt nicht an ein anderes resultset gedacht.
                    Danke für den Tipp.

                    Kommentar


                    • #11
                      verstehe ich nicht.
                      PHP-Code:
                      SELECT 
                        t1
                      .id AS id_1
                        
                      t2.id AS id_2
                      FROM 
                        tabelle1 t1

                        
                      tabelle2 t2
                      WHERE t1
                      .id t2.id 
                      dann sollte man doch so darauf zugreifen können:
                      PHP-Code:
                      echo $row->id_1;
                      echo 
                      $row->id_2
                      habe allerdings auch noch nie mit fetch_object gearbeitet. aber bei fetch_assoc funktioniert das auf jeden fall.

                      peter
                      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                      Meine Seite

                      Kommentar


                      • #12
                        Er will aber ja gerade nicht alle Spalten umbenennen.

                        Was übrigens auch eine Lösung ist ist die Spalte(n) nicht id sondern gleich <Tabellenname>_id zu benennen.
                        Also z.B.
                        Tabelle user
                        user_id
                        username
                        Tabelle guestbook
                        guestbook_id
                        user_id
                        entry

                        Hat den Vorteil, dass man deutlich seltener in Kollisionen läuft und Joins noch mit der schöneren USING-Syntax schreiben kann:
                        SELECT * FROM guestbook INNER JOIN user USING (user_id);

                        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                        Wie man Fragen richtig stellt

                        Kommentar


                        • #13
                          Mit einem anderen Resultset bin ich auch nicht weiter gekommen.
                          Ich finde leider keine Lösung, mehrere tabellen in ein und der selben Abfrage benutzen zu können welche selbe Spaltennamen verwenden wie z.B. "id" oder sonstiges.
                          Werde wohl auf die alte Methode zurück greifen müssen, die Spaltennamen eindeutig zu identifizieren.
                          Sprich: Aus "id" in "tabelle1" mach "tabelle1_id" in "tabelle1".
                          Finde ich zwar seeehr unpraktisch, aber nungut.
                          Danke Jungs

                          Kommentar


                          • #14
                            Dafür ist Alias da, wenn du nicht damit umgehen kannst, dann ist es dein Pech. Alle Leute können das, nur du nicht

                            Kommentar


                            • #15
                              Original geschrieben von asp2php
                              Dafür ist Alias da, wenn du nicht damit umgehen kannst, dann ist es dein Pech. Alle Leute können das, nur du nicht

                              Dann sag mir bitte, wie ich im folgenden, ohne umbenennung der spalten oder tabellennamen in der DB an beide ID's komme. Danke
                              PHP-Code:
                              mysql_query("SELECT tabelle1.id, tabelle1.irgendwas, tabelle2.id, tabelle2.irgendwas
                              WHERE tabelle1.irgendwas = tabelle2.irgendwas"

                              Nun möchte ich als Ausgabe die id (id's) von tabelle1 und auch die id (id's) von tabelle2 haben.
                              Sag du mir jetzt mal wie ich die ausgeben soll/kann !
                              Dann bin ich hochauf zufrieden.
                              Denn wenn die Abfrage fertig ist, enthält die Klasse oder die Array (je nachdem) nur EINEN Wert Namens "id" !

                              Kommentar

                              Lädt...
                              X