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

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

  • #16
    Also erstens: Mach vernünftige Joins mit LEFT/INNER/RIGHT JOIN.

    Zweitens: Aliase statt vollständige Tabellennamen ersparen Schreibarbeit und sind übersichtlicher.

    Drittens: Aliase können auch für Spalten verwendet werden.

    Beispiel:
    Code:
    SELECT
        t1.id AS erste_id, t1.irgendwas AS erstes_irgendwas,
        t2.id AS zweite_id, t2.irgendwas AS zweites_irgendwas
    FROM
        tabelle1 AS t1
    LEFT JOIN
        tabelle2 AS t2 ON ( t2.id = t1.tabelle2_id )

    Kommentar


    • #17
      Original geschrieben von phpMorpheus2

      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" !
      Die Lösung hat Kropff schon geliefert.

      Original geschrieben von Kropff
      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
      Du bist nur unfähig anzuwenden.

      Kommentar


      • #18
        Natürlich kann man mit Alias die ID's umbenennen.
        Dann kann ich aber auch gleich den Spaltennamen "id" umbenennen und gut ist!
        Dann brauch ich nicht permanent in jeder Query alles Alias'n und habe immer die richtige Bezeichnung.
        Es geht mir darum, NICHT umzubenennen.
        Lest mal den beitrag von ghostgambler.
        Er hat es verstanden.
        Jegliche Umbenennung verhindern.
        Ob Primär oder nur Temporär.

        z.B. das in der ResultArray stehen würde:
        PHP-Code:
        Array
        (
          [
        tabelle1][id] => 17
          
        [tabelle2][id] => 31

        Das geht wohl nicht und das wollte ich auch nur wissen

        Kommentar


        • #19
          Original geschrieben von asp2php
          Du bist nur unfähig anzuwenden.
          Keiner hat jemals erwähnt, dass ich es anwenden will!
          Ich überlege nur wie man was machen kann um einfach wissen zu sammeln.

          Kommentar


          • #20
            Original geschrieben von phpMorpheus2
            ... um einfach wissen zu sammeln.
            ... und genau geht es hier mit dir. Du mißbrauchst dar Forum, um Grundlagen zu lernen.

            *Verwarnung*

            Sollte weitere Fragen von dir in dieser Richtung kommen, wirst du eine Zwangpause einlegen müssen.

            Kommentar


            • #21
              Original geschrieben von phpMorpheus2
              Natürlich kann man mit Alias die ID's umbenennen.
              Dann kann ich aber auch gleich den Spaltennamen "id" umbenennen und gut ist!
              Es ist Schwachsinn alle Spalten so umzubenennen, dass kein Name doppelt vorkommen kann.

              Das wird in der Praxis nicht so gemacht.

              Kommentar


              • #22
                Original geschrieben von asp2php
                ... und genau geht es hier mit dir. Du mißbrauchst dar Forum, um Grundlagen zu lernen.

                *Verwarnung*

                Sollte weitere Fragen von dir in dieser Richtung kommen, wirst du eine Zwangpause einlegen müssen.
                Das nennst du eine Grundlage?
                Alias, sqlquery, das sind Grundlagen, ja.
                Aber eine Möglichkeit eine Ausgabe zu bekommen mit gleichen Spaltennamen aus zwei verscheidenen Tabellen ohne Alias oder eine zwangsumbenennung der Spaltennamen...
                Zeit mir auch nur EIN Tut wo dieser Falle beschrieben wird und du kriegst 'n Keks.

                Mache mir jetzt erstmal einen Kaffee

                Kommentar


                • #23
                  Original geschrieben von h3ll
                  Es ist Schwachsinn alle Spalten so umzubenennen, dass kein Name doppelt vorkommen kann.

                  Das wird in der Praxis nicht so gemacht.
                  Jeder hat seine eigenen Wege.
                  z.B.: postid=605270
                  Und verwende das Wort "Schwachsinn" nicht so selbstsicher.

                  Kommentar


                  • #24
                    Warum ein Tutorial für Grundlagen ... nur Scriptkiddies lesen Tutorials ... Anwendungsentwickler lesen Bücher, Dockumentationen oder gehen auf professionelle Schulungen ... such dir deine TUTs selbst zusammen.

                    Kommentar


                    • #25
                      Original geschrieben von phpMorpheus2
                      Jeder hat seine eigenen Wege.
                      z.B.: postid=605270
                      Und verwende das Wort "Schwachsinn" nicht so selbstsicher.
                      Wie gehst du sicher, dass kein Spaltenname doppelt vorkommt? Angenommen du hast eine Datenbank mit 50 Tabellen. Wenn du jetzt bei einer Tabelle eine neue Spalte anlegen willst, musst du alle anderen 49 Tabellen durchschauen, ob der Name nicht schon irgendwo vorkommt. Das ist einfach nur umständlich und idiotisch.

                      Und noch witziger wirds, wenn du mal Tabellen aus 2 Datenbanken zusammenlegst. Dann kannst du jede Tabelle mit jeder vergleichen, die Spaltennamen ändern und dann im PHP-Code haufenweise Queries umschreiben. Das soll sinnvoll sein?

                      Kommentar


                      • #26
                        Original geschrieben von asp2php
                        Warum ein Tutorial für Grundlagen ... nur Scriptkiddies lesen Tutorials ... Anwendungsentwickler lesen Bücher, Dockumentationen oder gehen auf professionelle Schulungen ... such dir deine TUTs selbst zusammen.
                        Achte auf deine Definition "Tutorial" !
                        Deine Aussage ist ein Wiederspruch in sich
                        Erkundige dich doch einmal, was das Wort "Tutorial" heißt und lege nicht gleich zu Grunde, wie es in der Gesellschaft ausgelegt wird.

                        Ein Tutorial ist eine schriftliche Gebrauchsanleitung, die mit Hilfe von (teils bebilderten) Beispielen Schritt für Schritt erklärt, wie man mit einem Computerprogramm umgeht oder bestimmte Ergebnisse erzielt.
                        Quelle: Wiki
                        Ein tut ist nichts anderes als ein kleiner Buch indem zur Verdeutlichung Code eingebracht wird.
                        Zumindest ist das "meine" Definition

                        Kommentar


                        • #27
                          Original geschrieben von h3ll
                          Wie gehst du sicher, dass kein Spaltenname doppelt vorkommt? Angenommen du hast eine Datenbank mit 50 Tabellen. Wenn du jetzt bei einer Tabelle eine neue Spalte anlegen willst, musst du alle anderen 49 Tabellen durchschauen, ob der Name nicht schon irgendwo vorkommt. Das ist einfach nur umständlich und idiotisch.

                          Und noch witziger wirds, wenn du mal Tabellen aus 2 Datenbanken zusammenlegst. Dann kannst du jede Tabelle mit jeder vergleichen, die Spaltennamen ändern und dann im PHP-Code haufenweise Queries umschreiben. Das soll sinnvoll sein?
                          Richtig.
                          Daher wird alles ja explizit benannt.
                          Um sicher zu stellen, dass ich nicht jedes mal beim Anlegen einer neuen Spalte schauen muss, ob es nicht diesen Namen in all den anderen tabellen schoneinmal gibt, verwende ich z.B. immer den Tabellennamen vor dem eigentlich Spaltennamen inkl. unterstrich.
                          aus dem Spaltenen "id" in der tabelle "table1" wird dann "table1_id" in der tabelle "table1".
                          Und die Übersicht über die Tabellennamen wird man nicht so schnell verlieren.
                          Ich kann ja mit ALias einfach temporär umbenennen, aber dann muss ich bei jeder Query darauf achten, das ich gleich umbenenne und nicht in der einen Abfrage mit einem anderen namen alias nehme als in der nächsten.

                          Aber ist doch jetzt auch egal :-)
                          Sonst krieg ich noch ärger

                          Kommentar


                          • #28
                            Ein s.g. TUT für (möchte gern) Programmierer im Internet ist immer ein Versuch ein Problem zu verharmlosen. Die Erklärungen darin sind dürftig; es beinhaltet keine Hinweise auf mögliche Laufzeitverhalten; der Leser wundert sich meist, warum das Beispiel bei ihm nicht läuft wie im TUT gezeigt, usw... usw...

                            Ein Buch dagegen vermittelt eine solide Grundlage, so dass der Entwickler selbst in der Lage ist ein Problem zu analysieren und zu lösen, auch ohne konkrete Beispiele zum Nachmachen. In Schulungen werden den Sachverhalt in den Bücher nochmals verdeutlich, vertieft und persönliche Erfahrung des Trainers weitergegeben.

                            Das was ihr Scriptkiddies so gern sucht, kann man meist direkt in die Mülltone treten und keiner trauert sich danach.

                            Kommentar


                            • #29
                              Original geschrieben von phpMorpheus2
                              Richtig.
                              Daher wird alles ja explizit benannt.
                              Um sicher zu stellen, dass ich nicht jedes mal beim Anlegen einer neuen Spalte schauen muss, ob es nicht diesen Namen in all den anderen tabellen schoneinmal gibt, verwende ich z.B. immer den Tabellennamen vor dem eigentlich Spaltennamen inkl. unterstrich.
                              aus dem Spaltenen "id" in der tabelle "table1" wird dann "table1_id" in der tabelle "table1".
                              Wenn du gerne unnötig viel schreibst und unübersichtlicher Queries haben willst...

                              Original geschrieben von phpMorpheus2
                              Und die Übersicht über die Tabellennamen wird man nicht so schnell verlieren.
                              Also ehrlich gesagt kenn ich nicht alle Spaltennamen von Tabellen der Projekte, an denen ich arbeite. Ich kenn nicht mal alle Tabellennamen. Es ist utopisch zu glauben, dass man sich alle merken kann oder dass ein neuer Mitarbeiter sofort alle Tabellen und Spaltennamen auswendig lernt. IMHO einfach nur ein unnötiges Handicap.

                              Original geschrieben von phpMorpheus2
                              Ich kann ja mit ALias einfach temporär umbenennen, aber dann muss ich bei jeder Query darauf achten, das ich gleich umbenenne und nicht in der einen Abfrage mit einem anderen namen alias nehme als in der nächsten.
                              Stimmt überhaupt nicht. Das Alias existiert nur für die eine Abfrage. Was du in den anderen Abfragen machst ist völlig egal. Du kannst sogar für jede einzelne Abfrage andere Aliases verwenden, wenns dir Spaß macht.

                              Original geschrieben von phpMorpheus2
                              Aber ist doch jetzt auch egal :-)
                              Sonst krieg ich noch ärger
                              Warum gibt's wohl Aliases? Um sie zu umgehen? Ja genau, das ist sicher der Sinn davon...

                              Kommentar


                              • #30
                                Original geschrieben von asp2php
                                Das was ihr Scriptkiddies so gern sucht, kann man meist direkt in die Mülltone treten und keiner trauert sich danach.
                                OffTopic:
                                pass auf, was du sagst. sonst nehm ich meinen auftritt vom netz


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

                                Kommentar

                                Lädt...
                                X