Statement

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

  • Statement

    Hallo zusammen,

    möchte folgendes machen: Habe eine Tabelle mit Bildern (id_bilder, Titel, Dateipfad, id_gruppen) und eine Tabelle Gruppen (id_gruppen, Gruppe). Jetzt möchte ich aus jeder Gruppe das alphabetisch erste Bild auslesen und das ganze nach Gruppe soriert anzeigen.

    Habe bisher folgenden Code, der sortiert aber leider nicht

    PHP-Code:
    SELECT 4101_Gruppen.Gruppe,4101_Bilder.Titel,4101_Bilder.id_bilder,4101_Gruppen.id_gruppen,4101_Bilder.Dateiname 
    FROM 4101_Bilder
    LEFT JOIN 4101_Gruppen ON 4101_Gruppen
    .id_gruppen 4101_Bilder.id_gruppen
    WHERE 4101_Bilder
    .Archiv 0
    GROUP BY 4101_Bilder
    .id_gruppen
    ORDER BY 4101_Bilder
    .Titel,Gruppe LIMIT 0,
    Wie muss ich den anpassen?

    VIELEN DANK!
    strauberry

  • #2
    Re: Statement

    Müsste eigentlich so gehen...

    Test-Daten?

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      Im groben funktioniert das ganze auch, es ist nur ein kleines Manko: er nimmt nicht das alphabetisch erste Bild aus der Gruppe sondern das erste eingetragene, also welches "am weitesten oben" in der Tabelle steht (mit der niedrigsten id_bilder; auto_increment).

      PHP-Code:
      CREATE TABLE `4101_Bilder` (
        `
      id_bilderint(11NOT NULL auto_increment,
        `
      Titelvarchar(255NOT NULL default '',
        `
      Dateinamevarchar(255NOT NULL default '',
        `
      Stichwortetext NOT NULL,
        `
      Archivtinyint(1NOT NULL default '0',
        `
      Datumint(11NOT NULL default '0',
        `
      id_gruppenint(11NOT NULL default '0',
        `
      Preisdecimal(10,2NOT NULL default '0.00',
        
      PRIMARY KEY  (`id_bilder`)
      ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=;

      -- 
      -- 
      Daten für Tabelle `4101_Bilder`
      -- 

      INSERT INTO `4101_Bilder` (`id_bilder`, `Titel`, `Dateiname`, `Stichworte`, 
      `
      Archiv`, `Datum`, `id_gruppen`, `Preis`) 
      VALUES (1'Bild Menschen 1''174670.jpg''Sprung,Himmel,Mädchen,Dynamik'0010.10),
      (
      2'Hallo''694799.jpg''Hallo, 22'0010.10),
      (
      3'Test''807899.gif'''00112.00),
      (
      4'jpgtest''205370.jpg'''0014.00),
      (
      5'Test gruppe''713435.jpg'''0041.00),
      (
      6'AA Sortierung''175307.jpg''QWE'0043.00),
      (
      7'Bild in Gruppe Abstr2''957659.jpg''banane2'10414.29),
      (
      8'Datumsstest''572929.jpg''Pillen'11160085600312.00);

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

      -- 
      -- 
      Tabellenstruktur für Tabelle `4101_Gruppen`
      -- 

      CREATE TABLE `4101_Gruppen` (
        `
      id_gruppenint(11NOT NULL auto_increment,
        `
      Gruppevarchar(255NOT NULL default '',
        
      PRIMARY KEY  (`id_gruppen`)
      ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=;

      -- 
      -- 
      Daten für Tabelle `4101_Gruppen`
      -- 

      INSERT INTO `4101_Gruppen` (`id_gruppen`, `Gruppe`) VALUES (1'Menschen'),
      (
      2'Natur'),
      (
      3'Gebäude'),
      (
      4'Abstr'),
      (
      5'test'),
      (
      6'fdsfdsf'),
      (
      7'fdsfsdf'); 

      Kommentar


      • #4
        Du willst also von jeder Gruppe ein Bild?
        Wieso drehst du den Query dann nicht um? SELECT auf Gruppen mit JOIN auf Bilder und Bilder sortierst du dann zuerst nach Gruppen-id und danach nach Titel ... würde ich zumindest mal versuchen

        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
        Wie man Fragen richtig stellt

        Kommentar


        • #5
          Weil nicht in jeder Gruppe auch Bilder vorhanden sind :-) Oder gibt es da ne elegante Lösung?

          Kommentar


          • #6
            pff, da hast du dir ja echt ein Problem angelacht Oo

            http://archives.neohapsis.com/archiv...6-q1/0992.html
            http://dev.mysql.com/doc/refman/4.1/...group-row.html

            Kannst ja mal mit dem Shop/Dealer-Query was rumprobieren, ich geh jetzt erstmal was essen ^^,

            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
            Wie man Fragen richtig stellt

            Kommentar


            • #7
              Sodele, hab das jetzt so gemacht, dass einfach jede Gruppe ausgelesen werden kann. Funktioniert soweit auch ganz ok, nur wird eben wieder nicht das alphabetisch erste Bild verwendet.

              Mein Statement sieht jetzt so aus:

              PHP-Code:
              SELECT 4101_Gruppen.Gruppe4101_Bilder.Titel4101_Bilder.Dateiname
              4101_Bilder.id_bilder,4101_Bilder.id_bilder AS Test FROM 4101_Gruppen 
              LEFT JOIN 4101_Bilder ON 
              (4101_Bilder.id_gruppen 4101_Gruppen.id_gruppen 
              AND 4101_Bilder.Archiv 0GROUP BY 4101_Bilder.id_gruppen 
              ORDER BY 4101_Bilder
              .Titel DESC4101_Gruppen.Gruppe 
              Das Feld "Test" habe ich noch drin weil ich eigentlich hinter das Join noch ein "WHERE Test NOT NULL" einfügen wollte (man kanns ja mal probieren, doch nur die Gruppen auszulesen, die ein Bild haben :-) ist aber nur ein nice2have )

              Aber das Problem, dass das Bild mit der kleinsten id und nicht mit einem A am Anfang des Titels verwendet wird, besteht weiterhin

              Kommentar

              Lädt...
              X