Ankündigung

Einklappen
Keine Ankündigung bisher.

Query für vor/nächst-Sortierung

Einklappen

Neue Werbung 2019

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

  • Query für vor/nächst-Sortierung

    Hallo,

    nach dem ich alles mögliche über JOIN's gelesen und ausprobiert habe, versuche ich es anzuwenden.

    Ich möchte mit nächstes Bild und vorheriges Bild in einer Tabelle mit darin sortierten Bildern blättern.

    Die Tabellen:

    thema_alben enthält ein vorgegebenes Thema zB. 11 und die zum Thema gehörenden Alben in der in Folge festgelegten Reihenfolge
    Alben_ID...........z.B. 45, 68, 72, 82, 91
    Thema_ID..........z.B 11
    Folge................ 1, 2, 3, 4, 5

    alben JOIN zur Tabelle thema_alben
    ID.....................(z.b. Folge = 3 -> Album 72)

    fotos JOIN zur Tabelle alben
    Alben_ID.............72
    Beschreibung like '00%' (nur das erste Bild des Alben)

    Ausgabe: das 1. Bild im Album 72

    z.B. nächstes Bild d.h. Folge 4 müßte ergeben das 1. Bild im Album 82
    z.B. vorheriges Bild d.h. Folge 2 müßte ergeben das 1. Bild im Album 68

    Die Abfrage für vorheriges Bild (Folge < ) habe ich so versucht:
    (nächstes Bild analog mit Folge >)

    PHP-Code:
    $sql "SELECT
                             thema_alben.Thema_ID AS Thema,
                             thema_alben.Alben_ID AS Album,
                             thema_alben.Folge AS Reihenfolge,
                             fotos.Name AS Fotobez,
                             alben.ID,
                             fotos.Alben_ID,
                             fotos.Beschreibung AS Fototext,
                             foto.Name AS Fotobez                                               
                     FROM
                              thema_alben
                     WHERE
                              Thema_ID = '"
    .$_GET['thema']."'
                     AND         
                             Folge < '"
    .$_GET['folge']."'
                     JOIN
                              alben
                     WHERE 
                              ID = thema_alben.Alben_ID
                     JOIN    
                             fotos                                                             
                     WHERE
                              Alben_ID = alben.ID
                     AND 
                              Beschreibung like '00%'
                     ORDER BY
                              thema_alben.Folge DESC
                     LIMIT
                              1                                                  
             "

    Ich bekomme die Syntaxerror-Meldung:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LEFT JOIN alben WHERE ID = thema_alben.Alben_ID L' at line 16

    Egal ob ich WHERE oder ON einsetze oder die Reihenfolge der Tabellen verändere, es kommt ständig eine Error-Meldung.

    Kann mir bitte jemand sagen welchen Fehler ich in der Abfrage habe?


  • #2
    Du hast die Reihenfolge nicht beachtet.

    Code:
    select a from b
    join c on d
    join c2 on d2
    (...)
    where e
    wobei b und c Tabellen sind, a Spalten und d und e Bedingungen.

    Kommentar


    • #3
      Zitat von Durin Beitrag anzeigen
      Du hast die Reihenfolge nicht beachtet.
      Soweit geändert:
      PHP-Code:
      $sql "SELECT
                               thema_alben.Thema_ID AS Thema,
                               thema_alben.Alben_ID AS Album,
                               thema_alben.Folge AS Reihenfolge,                         
                               alben.ID,
                               fotos.Alben_ID,
                               fotos.Name AS Fotobez,
                               fotos.Beschreibung AS Fototext,
                               foto.Name AS Fotobez                                               
                       FROM
                                thema_alben
                       ON
                                Thema_ID = '"
      .$_GET['thema']."'
                       AND         
                               Folge < '"
      .$_GET['folge']."'
                       JOIN
                                alben
                       ON 
                                ID = thema_alben.Alben_ID
                       JOIN    
                               fotos                                                             
                       ON
                                Alben_ID = alben.ID
                       WHERE
                                Beschreibung like '00%'
                       ORDER BY
                                thema_alben.Folge DESC
                       LIMIT
                                1                                                  
               "

      Bekomme trotzdem noch die Meldung:
      You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ON Thema_ID = '14' AND Folge < '3' JOIN ' at line 12

      Kommentar


      • #4
        Sorry, mit der Reihenfolge habe ich es erst jetzt richtig verstanden.
        Die Query ist jetzt in Ordnung - Danke für den Hinweis!

        PHP-Code:
        $sql "SELECT
                                 thema_alben.Thema_ID AS Thema,
                                 thema_alben.Alben_ID AS Album,
                                 thema_alben.Folge AS Reihenfolge,                         
                                 alben.ID,
                                 fotos.Alben_ID,
                                 fotos.Name AS Fotobez,
                                 fotos.Beschreibung AS Fototext,
                                 fotos.Name AS Fotobez                                               
                         FROM
                                  thema_alben                 
                         JOIN
                                  alben
                         ON 
                                  alben.ID = thema_alben.Alben_ID
                         JOIN    
                                 fotos                                                             
                         ON
                                  fotos.Alben_ID = alben.ID
                         WHERE
                                  fotos.Beschreibung like '00%'
                         AND
                                  thema_alben.Thema_ID = '"
        .$_GET['thema']."'
                         AND         
                                 thema_alben.Folge < '"
        .$_GET['folge']."'         
                         
                         ORDER BY
                                  thema_alben.Folge DESC
                         LIMIT
                                  1                                                  
                 "

        Kommentar

        Lädt...
        X