SQL-Abfrage mit PHP

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

  • #16
    Die Tabelle PERSON:
    ID int auto_increment primary key not null
    Vorname text
    Nachname text
    E_ID int not null

    Diese Tabelle nimmt die Daten über Personen auf, die etwas gepostet haben.
    E_ID stellt dabei die Verbindung zur Tabelle Eintrag her. Der Wert von E_ID entspricht dabei der ID aus der Tabelle Eintrag.


    Die Tabelle EINTRAG:
    ID int auto_increment primary key not null
    Ueberschrift text
    Nachricht text
    Datum date

    Diese Tabelle nimmt den Text mit Überschrift auf, der gepostet wurde.

    Kommentar


    • #17
      ok. jetzt weiss ich was du machen willst....

      allerdings hast du wohl einen denkfehler gemacht.
      eine person darf bestimmt mehr als einmal einen eintrag verfassen.
      also muss die E_ID aus PERSON raus und als U_ID in EINTRAG rein.

      Die Tabelle PERSON:
      UID int auto_increment primary key not null
      Vorname text
      Nachname text

      Die Tabelle EINTRAG:
      EID int auto_increment primary key not null
      UID int
      Ueberschrift text
      Nachricht text
      Datum date


      so sollte eine allgemeine sql-anweisung dafür aussehen.

      Code:
      SELECT    *
      FROM      PERSON p
                  LEFT INNER JOIN EINTRAG e USING(UID)
      wenn du jetzt nach einer person oder so suchen willst, kann das so aussehen.

      Code:
      SELECT    *
      FROM      PERSON p
                  LEFT INNER JOIN EINTRAG e USING(UID)
      WHERE     p.Vorname LIKE '%DERNAMEEBEN%' OR
                p.Nachname LIKE '%DERNAMEEBEN%'
      wenn du nun nur bestimmte felder haben willst, sieht das so aus.

      Code:
      SELECT    p.UID,
                p.Vorname,
                p.Nachname,
                e.Ueberschrift,
                e.Nachricht,
                e.Datum
      FROM      PERSON p
                  LEFT INNER JOIN EINTRAG e USING(UID)
      WHERE     p.Vorname LIKE '%DERNAMEEBEN%' OR
                p.Nachname LIKE '%DERNAMEEBEN%'
      ich denke, dass du damit klar kommst.
      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


      • #18
        Hallo getit.
        Was du willst -separate Datensätze aus *BEIDEN* tabellen- geht *NICHT*.
        Das lässt sich mit dem Befehl UNION in neueren mysql-Versionen (ab 4.irgendwas, wenn ich nicht irre) bewerkstelligen -auch das ist noch auzuloten, was dabei herauskommt- nicht aber mit älteren (letzteres wirst du wohl haben).

        mfg

        Kommentar


        • #19
          @abraxas
          danke!!

          aber natürlich auch an alle anderen!

          Kommentar


          • #20
            Hab schon wieder ein Problem:

            Also ich hab das jetzt so umgesetzt:

            Person
            E_ID int auto_increment not null primary key,
            Vorname text not null,
            Nachname text not null)

            Eintrag
            ID int auto_increment not null primary key,
            Ueberschrift text not null,
            Nachricht text not null,
            Datum date not null,
            E_ID int not null)

            Erklärung:
            Die E_ID in PERSON dient als Verbindung zur EINTRAG.

            Meine Frage:
            1. Ich brauche nochmal die Select Anweisung um alle Felder aus PERSON und EINTRAG abzufragen.

            2. Geht das ganze auch als Insert??? Wie muss die Anweisung dann aussehen um alle Spalten zu füllen?

            Kommentar


            • #21
              zu 1.
              mache ein * nach dem select

              zu 2.
              wenn dann musst du schon 2x insert machen.

              aber wenn eine person was schreibt, ist diese id beim schreiben bereits bekannt. somit brauchst du auch NIE beide tabellen gleichzeitig beschreiben.

              du legst ja erst einmal viele benutzer oder halt namen an.

              irgendwann schreibt so eine person einen eintrag. diesen eintrag schreibst du dann in die tab EINTRAG. bei diesen insert schreibst du dann die ID des users in das feld UID mit rein.

              tipp: nenne das feld E_ID in user und eintrag bitte in UID oder U_ID um. schliesslich ist das die ID des users und nicht eines eintrages
              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


              • #22
                ne, des ist ein missverständniss

                -->du legst ja erst einmal viele benutzer oder halt namen an.

                -->irgendwann schreibt so eine person einen eintrag. diesen eintrag
                -->schreibst du dann in die tab EINTRAG. bei diesen insert schreibst du
                -->dann die ID des users in das feld UID mit rein.

                Die Tabellen werden ausgefüllt, wenn jemand etwas postet.

                Man muss bei jedem Eintrag seinen Namen (Vor-,Nachnamen) und den Text eingeben.
                Diese Infos werden dann in den zwei Tabellen verteilt.

                Kommentar


                • #23
                  dann kannst du das ja auch direkt in eine tabelle legen. dann hast du auch den ganzen stress nciht mehr...
                  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

                  Lädt...
                  X