Join 2Tabellen or Abfragen!

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

  • Join 2Tabellen or Abfragen!

    Hi,
    also bin nicht gerade ein SQL Freak deshalb tuh ich mir unheimlich schwer mit Join und noch Abfragen dazu hoffe ihr könnt mir da helfen, weil mit ner
    3zeiligen SQL Abfrage kann man sich oft 100zeilen IF Abfragen sparen ;-)!*g*

    Also:
    Ich hab 2Tabellen -> userdata & teradatauser
    (teradatauser bezieht sich auf userdata:
    userdata = benutzerdaten,persönlichedaten + passwort etc.
    teradatauser = termin (z.B. termin_montag,termin_freitag)
    ist also individuell.
    In teradatauser hab ich aber auch immer e_mail & username aus userdata stehen damit ich später in der Abfrage ja die Datensätze zuordnen kann die
    zu den jeweiligen benutzern der userdata tabelle gehören.
    (einfach mal die SQL Abfrage unten anschauen dann versteht ihr vielleicht besser was ich will ;-)

    Hab jetzt ein Suchformular mit folgenden Feldern:
    - e_mail
    - nachname
    - vorname

    so jetzt kann der User auf Wunsch eine OR Abfrage starten, das heisst:
    wenn er "search" klick und z.B.
    eine e_mail Adresse eingeben hat und den vornamen
    soll er jetzt aus den 2tabellen folgendes ausgeben:
    Alle Datensätze wo halt die e_mail beinhalten(ist ja nur eine weil es ja nicht zwei gleich e_mail adressen geben darf)
    und halt alle mit dem gleichen vornamen.
    meine SQL Abfrage:

    PHP-Code:
    <?php
    // auslesen der Daten aus der Datenbank
    IF($abfrage == "or"){
    $result1=mysql_query("select * from $userdata as a,$teradatauser as b where a.e_mail = '$e_mail' and b.e_mail = '$e_mail' or a.vorname = '$vorname'");
    while (
    $row1=mysql_fetch_object($result1)){
    ?>
    Danke schon mal für Eure Hilfe !

    ps. Weiss das das SQL nie gehen kann or & and *g* aber so versteht ihr denke ich besser was ich will ;-P.*hoff ich*

  • #2
    PHP-Code:
    SELECT a.col1a.col2b.col1b.col2 
    FROM $userdata a JOIN $teradatauser b 
    ON a
    .e_mail b.e_mail 
    WHERE a
    .e_mail '$e_mail' or a.vorname '$vorname' 
    könnte es heissen
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      um das OR muss noch eine klammer.

      bisher hattest du X and Y or Z => (X and Y) or Z

      du willst aber wahrscheinlich X and (Y or Z) haben

      PHP-Code:

      <?php
      // auslesen der Daten aus der Datenbank
      IF($abfrage == "or"){
      $result1=mysql_query("select * from $userdata as a,$teradatauser as b where a.e_mail = '$e_mail' and (b.e_mail = '$e_mail' or a.vorname = '$vorname')");
      while (
      $row1=mysql_fetch_object($result1)){
      ?>
      @MelloPie
      davon abgesehen ist
      ... FROM tab1 JOIN tab2 ....
      das gleiche wie
      ... FROM tab1,tab2 ....



      @tomtherock
      ich würde dir aber empfehlen eine verknüpfung nicht mit email UND name zu machen, sondern eine ID zu verwenden. lässt sich besser handeln und ist sauberer.
      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


      Kommentar


      • #4
        schicke mal deine tab-struktur hier rein.
        MIT ERKLÄRUNG bitte.
        dann schreibe auch, wie was zusammengehören soll. dann kann man die sql-query mal besser machen ....
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Sorry erstmal das ich erst so spät antworten, aber wir hatten von Montag bis Mittwoch ne ASP Schulung *kotz* und am Donnerstag musste ich in die Berufsschule *nochmal kotz*.
          So jedenfall erstmal danke für Eure Hilfe hab jetzt mal Code von "Abraxax"
          eingefügt der klappt nicht richtig denn das Problem ist ja:
          (sorry hatte das glaub ich ein wenig verwirrend beschrieben)
          Also
          hab 3Felder
          e_mail ( dropdown feld er holt sich alle e_mail adresse aus der Datenbank -> tbl $userdata )
          vorname ( eingabefeld -> tbl $userdata )
          nachname ( eingabefeld -> tbl $userdata )

          so also im endeffekt soll es alle Variationen geben das heisst:
          wenn er e_mail ausgewählt hat dann zeigt er halt den Datensatz an mit der dazugehörigen e_mail
          "Problem" dabei er muss halt den Datensatz mit ausfiltern aus $teradatauser (Termin,Anmerkungen etc.)
          das gleich jetzt wenn er z.B. bei Vorname nur halt nen "Vornamen" eingibt
          soll er halt alle Datensätze ausgeben die diesen "Vornamen" beinhalten, allerdings hier wieder mit Verknüpfung mit der "teradatauser" (Termin,Anmerkungen etc.)
          Ich denke das meine Tabellen an sich auch falsch aufgebaut sind bzw. wirklich irgendwie eine ID brauchen nur das Problem ist wie erreiche ich das bei beiden Tabellen die gleiche ID vergeben wird bzw. auch aktualisiert wird.
          Hier zum besseren Verständnis ein Screenshot ;-):

          Kommentar


          • #6
            ich werde mir das heute abend mal in ruhe anschauen.

            aber eines kann ich jetzt schon sagen. die struktur der DB muss noch verändert werden.

            auch hierzu noch einige fragen/bitten:

            - sollen mehrer termine pro person machbar sein? ich denke mal JA.

            - ist es ein problem die DB zu ändern? (du müsstest dann aber auch andere scripte anpassen.)

            - kannst du mal die tabs als SQL-command mit einigen FAKE-datensätzen posten. ist besser, als wenn ich den screenshot abtippen muss.
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              ohne antwort auf meinen letzten post mache ich aber nicht weiter....
              post die sachen bitte.
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #8
                Man sorry tut mir echt leider war im jetzt über Weihnachten nicht im Geschäft Urlaub !
                So jetzt komm ich voller "Kraft" und "Motivation" wieder her *g*.
                Aber ich denke ich werde das einfach lössen die Datenbank wird nie größer als 250Datensätze werden deshalb denke ich das das Dropdown bei username reicht vielleicht werde ich noch nach vornamen & nachnamen Filter einbauen....
                ich meld mich auf jedenfall nochmal falls ich wieder was nicht schall...kannst also schon mal drauf warten
                Bis dahin Frohes Neues noch

                Kommentar

                Lädt...
                X