Philip Ehret: MySQL: Datensätze zweier Tabellen

Hallo,

ich hab die Tabelle galleries und die Tabelle pictures.
Die sehen wie folgt aus:
  Tabelle galleries
  id int auto_increment PRIMARY_KEY
  name varchar(255)

Tabelle pictures
  id int auto_increment PRIMARY_KEY
  g\_id int
  description text

Nehmen wir an wir haben folgende Datensätze:
  Tabelle galleries
  1, "Gallerie Eins"
  2, "Gallerie Zwei"
  3, "Gallerie Drei"

Tabelle pictures
  1, 1, "Bild Eins"
  2, 1, "Bild Zwei"
  3, 2, "Bild Drei"
  4, 3, "Bild Vier"

So gehören Bilder Eins und Zwei zu der Gallerie Eins.

Nun möchte ich gerne anhand der Gallerie-ID den Gallerie-Namen und alle zugehörigen Bilder in ein Array einlesen. Wie geht das mit MySQL?

Viele Grüße,
Philip

  1. Hello,

    Hallo,

    ich hab die Tabelle galleries und die Tabelle pictures.
    Die sehen wie folgt aus:
      Tabelle galleries
      id int auto_increment PRIMARY_KEY
      name varchar(255)

    Tabelle pictures
      id int auto_increment PRIMARY_KEY
      g\_id int
      description text

    Nehmen wir an wir haben folgende Datensätze:
      Tabelle galleries
      1, "Gallerie Eins"
      2, "Gallerie Zwei"
      3, "Gallerie Drei"

    Tabelle pictures
      1, 1, "Bild Eins"
      2, 1, "Bild Zwei"
      3, 2, "Bild Drei"
      4, 3, "Bild Vier"

    So gehören Bilder Eins und Zwei zu der Gallerie Eins.

    Nun möchte ich gerne anhand der Gallerie-ID den Gallerie-Namen und alle zugehörigen Bilder in ein Array einlesen. Wie geht das mit MySQL?

    z.B. mit einem Select mit where-Klausel

    select galleries.name, pictures.description where galleries.id = pictures.g_id

    Es werden nun mur die Galerien angezeigt, zu denen es auch Bilder gibt.
    Wolltest Du das so?

    Oder sollten alle Galerien aufgeführt werden, auch wenn es keine Bilder dazu gibt?

    Harzliche Grüße vom Berg
    http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau

    1. Hallo,

      Es werden nun mur die Galerien angezeigt, zu denen es auch Bilder gibt.
      Wolltest Du das so?

      Es sollten auch Gallerien ohne Bilder angezeigt werden.

      Viele Grüße,
      Philip

      1. Hello,

        Es werden nun mur die Galerien angezeigt, zu denen es auch Bilder gibt.
        Wolltest Du das so?

        Es sollten auch Gallerien ohne Bilder angezeigt werden.

        Dann musst Du den passenden Join verwenden.

        schau doch z.B. mal hier http://www.little-idiot.de/mysql/mysql-118.html#joins
        oder auch im MySQL-Handbuch http://dev.mysql.com/doc/refman/5.0/en/join.html

        Harzliche Grüße vom Berg
        http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau

        1. Hello,

          Es sollten auch Gallerien ohne Bilder angezeigt werden.

          SELECT A.name, B.description
          FROM galleries AS A
          LEFT OUTER JOIN pictures AS B ON A.ID = B.g_id;

          Ich denke, so müsste es funktionieren.

          Wenn man sowas für die Anzeige aufbereitet, kann die Datenmenge im Ergebnis aber ziemlich groß werden, da der Name der Gallerie ja redundant vorkommt.

          Harzliche Grüße vom Berg
          http://www.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau

          1. Hallo,

            Wenn man sowas für die Anzeige aufbereitet, kann die Datenmenge im Ergebnis aber ziemlich groß werden, da der Name der Gallerie ja redundant vorkommt.

            Joa, da hast du leider Recht. Wenn ich nun nur ein einziges Mal die Daten von der Gallerie haben will, muss ich das dann mit zwei Queries machen?

            Viele Grüße,
            Philip

            1. Hello,

              Joa, da hast du leider Recht. Wenn ich nun nur ein einziges Mal die Daten von der Gallerie haben will, muss ich das dann mit zwei Queries machen?

              Ja. Je nach Datenmenge auch noch mehr. Ich würde es jedenfalls so machen.
              Gerade, wenn das nachher in PHP oder so weiterverarbeitet werden soll zur Anzeige, dann würde ich gleich zwei Arrays in der passenden Sortierung aufbauen.

              Wie ist denn die Darstellung geplant?

              Harzliche Grüße vom Berg
              http://www.annerschbarrich.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              Nur selber lernen macht schlau

        2. Hallo Tom,

          Du warst verdammt lange nicht da!

          Dann musst Du den passenden Join verwenden.
          schau doch z.B. mal hier

          SELFHTML aktuell:
          Einführung Joins
          Fortgeschrittene Jointechniken.

          Ich bin voreingenommen :-) Diese Artikel sind besser als die von Dir verlinkten.

          Freundliche Grüße

          Vinzenz