Ankündigung

Einklappen
Keine Ankündigung bisher.

Fremdschlüssel von einer Tabelle in einer anderen Tabellen verwenden

Einklappen

Neue Werbung 2019

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

  • Fremdschlüssel von einer Tabelle in einer anderen Tabellen verwenden

    Hallo,
    ist es möglich, innerhalb von MySQL Fremdschlüssel (ID) von einer Tabelle (Freunde) in einer anderen Tabelle (Sender) zu verwenden?

    Beispiel: Lade Beiträge von Freunde

    Freunde
    - id_user (eigene ID)
    - id_friend

    Beiträge
    - id_beiträge
    - beiträge_werte
    ...

    Sender
    - id_beiträge
    - id_user
    - sender_zeit

    MySQL sollte nun folgendes machen:
    Lade die IDs von meinen Freunden und verwende diese als IDs für die Tabelle "Sender" mit den Limit 10 (Sortiert nach sender_zeit (die 10 letzten Beiträge)) und gebe die IDs von Beiträgen an die Tabelle "Beiträge" weiter.

    Ist das i.wie machbar? Oder muss ich das mit PHP lösen?

  • #2
    Suchst du nach JOIN?

    Kommentar


    • #3
      Wenn ich dich richtig verstehe, ist das kein Problem mit Fremdschlüsseln, sondern eine Sache des JOINens. Also in deinem Fall müsstest du eben irgendwie Freunde und Sender joinen. Es ist aber kein Problem, das du z.B. sowas machst:
      SELECT * FROM freunde JOIN sender ON freunde.id_friend = sender.id_user

      Kommentar


      • #4
        Also

        SELECT *
        FROM freunde as fr, sender as se, beiträge as bt
        WHERE fr.id_us = $variable
        AND se.id_user = fr.id_us
        AND bt.id_beiträge = se.id_beiträge
        ORDER BY se.sender_zeit DESC
        LIMIT 10

        Richtig? xD

        Kommentar


        • #5
          Was war an dem Beitrag von tropi so kompliziert? xD

          Kommentar


          • #6
            Ich arbeite nur so. Sollte aber wahrscheinlich richtig so sein . Das Problem lag aber nicht wirklich an den Fremschlüsseln, wie Tropi schon sagte eher an das joinen^^

            Kommentar


            • #7
              Warum beschäftigst du uns dann wenn du glaubst bereits zu wissen, wie man es richtig macht?

              Kommentar


              • #8
                Weil ich derzeit paar Blackouts habe xD

                Kommentar


                • #9
                  Schau dir mal JOIN an.

                  Kommentar


                  • #10
                    Ob der Query richtig ist kann ich dir nicht sagen, weil deine Beschreibung zu ungenau war bzw. ich sie nicht ganz verstanden habe. Bekommst du die richtigen Ergebnisse zurück?
                    Ansonsten worauf dich rkr offenbar noch hinweisen will ist die explizite JOIN-Syntax. Derzeit hast du drei Tabellen bei "FROM" stehen, im schlimmsten Fall wird da alles mit allem verknüpft (Kartesisches Produkt). Das heißt du bildest zuerst eine riesige Ergebnismenge, filterst dann aber mit deiner WHERE-Bedingung (fast) alles wieder weg. Das ist natürlich nicht ideal (von der Performance). Unter Umständen erkennt der Query Optimizer von MySQL was du eigentlich meinst und arbeitet intern mit einem JOIN, auch wenn du keinen explizit angegeben hast. Wenn du aber explizit die JOIN-Syntax verwendest, dann verwendet MySQL auch ganz sicher die JOINs.

                    Zur Performance: Du magst vielleicht sagen das die nicht so wichtig ist, allerdings kann das da schnell ins Gewicht fallen. 1000*1000*1000 Zeilen sind schon 1 Milliarde.

                    Kommentar

                    Lädt...
                    X