SQL picture

  • Hi,


    ich hab eine Tabelle `beitrag` und eine Tabelle `beitrag_picture`.


    Ich habe jetzt z.b einen Beitrag der wie folgt aussieht:

    PHP
    id | user_id | text
    12 |     5     | Hallo


    Dazu habe ich in der `beitrag_picture` das hier eingetragen:


    PHP
    id | beitrag_id | image 
    1  |     12     | Tier.png
    2  |    12      | Auto.png


    Jetzt wollte ich beide Fotos anzeigen lassen, jedoch zeigt er mir immer nur eins an. Weiß jemand woran es liegen kann?


    SQL


    So gebe ich es aus:


  • Denkfehler =)

    Jetzt willst Du Dir alle Beiträge ausgeben lassen, die vom user :user sind:

    SQL
    -- vereinfacht
    SELECT 
        `beitrag`.`id`,
        `beitrag`.`user_id`,
        `beitrag`.`text`, 
        `beitrag_pictures`.`image`,
        FROM `beitrag` 
        LEFT JOIN `beitrag_pictures` ON `beitrag`.`id` = `beitrag_pictures`.`beitrag_id`
        WHERE `beitrag`.`user_id` = :user_id LIMIT 10;

    Das heißt Du bekommst in etwa so eni Ergebnis:

    Code
    id | user_id | text  | image
    -------------------------------
    1  | 12      | Hallo | Tier.png <---- per row `beitrag` kann man nur ein bild adden

    Un hier ist das Problem: Du kannst nicht 2 rows in eine selecten =)


    1:n Beziehung. Per 1 Beitrag kann es n Bilder geben.


    Was Du wolltest ist

    Code
    id | user_id | text  | image
    -------------------------------
    1  | 12      | Hallo | Tier.png
       |         |       | Auth.png

    die beiden Bilder in eine row selecten. Geht aber nicht.



    Eine Lösung könnte hier sein (wenn Du nur eine SQL Anfrage ansenden willst)

    die Bilder zusammenzufügen.

    Code
    id | user_id | text  | images
    -------------------------------
    1  | 12      | Hallo | Tier.png,Auth.png

    Per PHP könntest Du den String dann wieder teilen (explode(',', $row['images'])).



    ----------------------

    Da mich das auch interessiert hat - hier mal ein Bsp Schritt für Schritt:

    Test tbl erstellen:

    Erstmal simples ausgeben aller Beiträge von einem user:

    Jetzt wollen wir die Bilder dazu:

    Geht natürlich nicht so einfach.

    Wir erstellen also einen String aus n Bildern:

    GROUP_CONCAT

    Aber hier fehlen Beiträge!

    Wir gruppieren nach Beiträgen:

    TADA!

    Jetzt noch den user dazu (obwohl ich das für unnötig halte)



  • Danke dir das du dir soviel mühe gegeben hast (Y). Hab das letzte SQL Statement von dir mal probiert. Hab auch kapiert was ich falsch gemacht habe, aber irgendwie zeigt er mir jetzt keine Beiträge an und auch keinen Fehler.

  • Wie sieht denn die query jetzt aus?

  • Gibt es bei Dir denn einen User mit der Id 1? Lt. Deinem ersten Post, hast Du die 5.

    Du solltest nicht nur die finale Variante von cottton kopieren, sondern verstehen, was die einzelnen gezeigten und erklärten Scripte überhaupt tun.


    Ein gutes Beispiel dafür, dass man die Lösung am Ende einfach mal weg lassen sollte...



    Frohes neues noch...

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!