Announcement

Collapse
No announcement yet.

Frage zum Abfragen von Daten mit JOIN etc.

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Frage zum Abfragen von Daten mit JOIN etc.

    Hallo Allezusammen,
    mir hat euer Forum schon oft weiter geholfen durch die vielen gelösten Probleme, doch nun stehe ich selber vor einem und weiß nicht weiter.

    Zu MySQL, ich benutze v.5.0.19

    Zum Problem, ich habe in der Datenbank wie folgt drei Tabellen:
    PHP Code:
    |Tablealbums
    +-------------
    |
    Rowsid_album id_user title description create
    +-------------------------------------------------------

    |
    Tablealbumpictures
    +--------------------
    |
    Rowsid_album id_pic
    +-----------------------


    |
    Tablepictures
    +---------------
    |
    Rowsid_pic id_user original name extension create
    +------------------------------------------------------------- 
    Mein vorhaben ist nun mit einer Query Die Alben als auch die dazugehörigen Bilder aus der Datenbank zu holen, entsprechend der BenutzerID.

    Meine bisherige Query schaut so aus:
    PHP Code:
    SELECT a.id_album,a.id_user,a.title,a.description,a.create,b.id_pic,b.original,b.name,b.extension.b.create
    FROM albums 
    as apictures as b
    LEFT JOIN albumpictures 
    as c
    ON 
    (c.id_pic=b.id_pic)
    WHERE c.id_album=a.id_album AND a.id_user=
    Ich bekomme "logischerweise" damit das das ganze Paket.

    Meine Frage nun an euch, gibt es eine Möglichkeit mit JOINS, Gruppierungen, doppelten Select abfragen etc. das ganze (ähnlich einer Array Struktur) Auslesen zu lassen damit ich es bequem weiter verarbeiten kann ?

    Danke schonmal an etwaige Antwort Poster


    Grüße
    Der Pixelschieber

  • #2
    Ich verstehe deine Frage nicht ganz. Was meinst du mit "ganzem Paket" und "ähnlich Array-Struktur)?

    Comment


    • #3
      Ich muss gestehen, ich verstehe die Frage leider auch nicht so ganz. Müsstest wirklich ein wenig mehr ausdrücken was du raushaben möchtest.
      Das Datenbankschema finde ich seltsam zusammen gebaut. Wäre es nicht besser in dieser Form zu machen:
      Einfach die Album_ID mit in die Tabelle Picture aufnehmen. Dann entfällt die Tabelle "albumpictures".
      Es kommt natürlich drauf an, ob du damit etwas bestimmtes bezweckst. So wie es momentan ist, könnte man ein Foto mehreren Alben hinzufügen. Aber eigentlich gehört doch ein Foto immer zu einem Album.
      Ein "echtes" Foto kann ich ja auch nur einmal in ein Fotoalbum kleben und dann wars das.

      Gruß

      Comment


      • #4
        Originally posted by Markus Kinzler View Post
        Ich verstehe deine Frage nicht ganz. Was meinst du mit "ganzem Paket" und "ähnlich Array-Struktur)?
        Sorry falls ich mich unverständlich ausgedrückt habe, war etwas in eile als ich den Post verfasst habe.

        Wie ja oben schon erwähnt wurde bekomme ich mit meiner Query im Prinzip ja [fast] das gewünschte Ergebnis, Array Ausgabe:
        PHP Code:
        Array
        (
            [
        0] => Array
                (
                    [
        id_album] => 2
                    
        [id_user] => 1
                    
        [title] => Familie
                    
        [description] => Familien Fotos
                    
        [id_pic] => 34
                    
        [name] => 12218968
                    
        [extension] => jpg
                    
        [create] => 1180798529
                
        )

            [
        1] => Array
                (
                    [
        id_album] => 2
                    
        [id_user] => 1
                    
        [title] => Familie
                    
        [description] => Familien Fotos
                    
        [id_pic] => 35
                    
        [name] => 12218969
                    
        [extension] => jpg
                    
        [create] => 1180798529
                
        )

            [
        2] => Array
                (
                    [
        id_album] => 2
                    
        [id_user] => 1
                    
        [title] => Familie
                    
        [description] => Familien Fotos
                    
        [id_pic] => 36
                    
        [name] => 12218970
                    
        [extension] => jpg
                    
        [create] => 1180798529
                
        )

            [
        3] => Array
                (
                    [
        id_album] => 1
                    
        [id_user] => 1
                    
        [title] => Abi 99
                    
        [description] => Abi Party
                    
        [id_pic] => 37
                    
        [name] => 12218971
                    
        [extension] => jpg
                    
        [create] => 1180798529
                
        )


            [
        4] => Array
                (
                    [
        id_album] => 1
                    
        [id_user] => 1
                    
        [title] => Abi 99
                    
        [description] => Abi Party
                    
        [id_pic] => 38
                    
        [name] => 12218972
                    
        [extension] => jpg
                    
        [create] => 1180798529
                
        )

            [
        5] => Array
                (
                    [
        id_album] => 1
                    
        [id_user] => 1
                    
        [title] => Abi 99
                    
        [description] => Abi Party
                    
        [id_pic] => 39
                    
        [name] => 12218973
                    
        [extension] => jpg
                    
        [create] => 1180798529
                
        )

        Mein Vorhaben wäre nun die Query "irgendwie" so zu gestalten das mein Ergebnis als bsp.Arry ungefähr so aussehen könnte:
        PHP Code:
        Array
        (
            [
        0] => Array
                (
                    [
        id_album] => 2
                    
        [id_user] => 1
                    
        [title] => Familie
                    
        [description] => Familien Fotos
                    
        [pictures] => Array
                        (
                            [
        0] => Array
                                (
                                    [
        id_pic] => 34
                                    
        [name] => 12218968
                                    
        [extension] => jpg
                                    
        [create] => 1180798529
                                
        )

                            [
        1] => Array
                                (
                                    [
        id_pic] => 34
                                    
        [name] => 12218968
                                    
        [extension] => jpg
                                    
        [create] => 1180798529
                                
        )

                            [
        2] => Array
                                (
                                    [
        id_pic] => 34
                                    
        [name] => 12218968
                                    
        [extension] => jpg
                                    
        [create] => 1180798529
                                
        )

                        )

                )

            [
        1] => Array
                (
                    [
        id_album] => 1
                    
        [id_user] => 1
                    
        [title] => Abi 99
                    
        [description] => Abi Party
                    
        [pictures] => Array
                        (
                            [
        0] => Array
                                (
                                    [
        id_pic] => 34
                                    
        [name] => 12218968
                                    
        [extension] => jpg
                                    
        [create] => 1180798529
                                
        )

                            [
        1] => Array
                                (
                                    [
        id_pic] => 34
                                    
        [name] => 12218968
                                    
        [extension] => jpg
                                    
        [create] => 1180798529
                                
        )

                            [
        2] => Array
                                (
                                    [
        id_pic] => 34
                                    
        [name] => 12218968
                                    
        [extension] => jpg
                                    
        [create] => 1180798529
                                
        )

                        )

                )


        Mir ist auch klar das eine Ausgabe wie die eben "direkt" nicht per Query möglich ist. Ich will einfach nur vermeiden unnötig viele Schleifen zu verschachteln um Schlußendlich ein Array wie jenes oben raus zu bekommen.

        Einfach die Album_ID mit in die Tabelle Picture aufnehmen. Dann entfällt die Tabelle "albumpictures".
        Es kommt natürlich drauf an, ob du damit etwas bestimmtes bezweckst. So wie es momentan ist
        Hallo Timo,
        ich könnte "natürlich" auch die Album_ID in jedes einzelne Bild hinzufügen welches ich erstelle, aber so wie ich es momentan habe (mit drei Tabellen) ist es einfach besser.

        könnte man ein Foto mehreren Alben hinzufügen. Aber eigentlich gehört doch ein Foto immer zu einem Album.
        Das mag vom DB-Layout her möglich sein, aber in der Alltäglichen Anwendung habe ich ja immer noch alle Fäden in der Hand und kann daher selbst bestimmen welche Ziordnungen getätigt werden.
        Zuletzt editiert von Pixelschieber; 06.06.2007, 14:31.

        Comment


        • #5
          Wie du selber schon geschrieben hast wirst du hier mit einem Query wohl leider nicht weiterkommen.
          Aber mit 2 Schleifen in PHP hast du doch schon dein ganzes Array aufgebaut. Das sollte programmiertechnisch und von der Performance her eigentlich kein großer Aufwand sein.
          Also per SELECT alle Alben holen. In einer While-Schleife alle Datensätze durchgehen und die Alben_id merken. Dann Array füllen und mit der aktuellen ID alle Bilder holen. Dann in der nächsten Schleife alle Infos zu den Bildern ins 2te Array.
          Die Größenordnung der Schleifen wäre somit x (Datensätze Alben) hoch y (Datensätze Bilder).
          Sollte eigentlich kein Problem sein.

          Gruß

          Comment

          Working...
          X