ilch Forum » Allgemein » HTML, PHP, SQL,... » SQL - Subselects und Unions

Geschlossen
  1. #1
    User Pic
    Domme_09 Mitglied
    Registriert seit
    08.07.2008
    Beiträge
    267
    Beitragswertungen
    0 Beitragspunkte
    Hallo Zusammen,

    ich habe irgendwie ein Problem mit dem Zusammenbauen meines SQL-Strings für die Suche. Und zwar möchte ich das ganze Dingen nach "time" sortiert haben.

    SQL:
    	SELECT DISTINCT 0 as fid, news_title as titel, 'news' as typ, news_id as id, DATE_FORMAT(news_time, '%d.%m.%Y') as time
    FROM ic1_news
    WHERE (news_text LIKE '%bremen%' AND 1 = 1)
    
    UNION
    
    SELECT DISTINCT 0 as fid, CONCAT('Paragraph ', paragraph, ' ', p.titel, ' Absatz Nr. ', nr) as titel, 'satzung' as typ, p.titel as id, '' as time
    FROM ic1_satzungsAbsatz
    INNER JOIN ic1_satzungsParagraph p ON paragraph = p.id
    WHERE (text like '%bremen%' AND 1=1)
    
    UNION 
    
    SELECT DISTINCT 0 as fid, titel, 'fangesang' as typ, titel as id, '' as time
    FROM ic1_fangesang
    WHERE (text like '%bremen%' AND 1=1)
    
    UNION 
    
    SELECT DISTINCT 0 as fid, CONCAT(r.bezeichnung, ': ', m.bezeichnung) as titel, 'foto' as typ, DATE_FORMAT(datum, '%y%m%d') as id, DATE_FORMAT(datum, '%d.%m.%Y') as time
    FROM ic1_multimedia m
    INNER JOIN ic1_multimediaRubrik r ON r.id = rubrik
    WHERE (m.bezeichnung like '%bremen%' AND foto = 1)
    
    UNION 
    
    SELECT DISTINCT 0 as fid, CONCAT(r.bezeichnung, ': ', m.bezeichnung) as titel, 'video' as typ, DATE_FORMAT(datum, '%y%m%d') as id, DATE_FORMAT(datum, '%d.%m.%Y') as time
    FROM ic1_multimedia m
    INNER JOIN ic1_multimediaRubrik r ON r.id = rubrik
    WHERE (m.bezeichnung like '%bremen%' AND video = 1)


    Habe schon versucht das Ganze mit einem SELECT zu umgeben und dann unten nen ORDER BY dran zu hängen, aber leider ist das nicht sortiert...

    Anschauen könnt ihr euch den aktuellen Status hier:
    externer Link

    betroffene Homepage: externer Link


    Zuletzt modifiziert von Domme_09 am 08.04.2010 - 21:19:29
    www.bvbsupporters-ms.de
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    OloX Hall Of Fame
    Registriert seit
    25.02.2006
    Beiträge
    990
    Beitragswertungen
    23 Beitragspunkte
    Hey Domme_09,
    ich würde die Ausgabe in einen Array legen, und dann einfach nach Datum sortieren lassen zwinker

    MfG OloX
    PHP, JavaScript, CSS
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Domme_09 Mitglied
    Registriert seit
    08.07.2008
    Beiträge
    267
    Beitragswertungen
    0 Beitragspunkte
    meinst in php sortieren lassen oder wie?
    Geht das nicht auf SQL-Basis direkt? Wäre ja dann schon um einiges performanter :-)
    www.bvbsupporters-ms.de
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    OloX Hall Of Fame
    Registriert seit
    25.02.2006
    Beiträge
    990
    Beitragswertungen
    23 Beitragspunkte
    In einer UNION-Klausel geht das glaube nicht ... grumml

    ...
    while($r = db_fetch_assoc($q)  ) {
       $resAr[$r['time']] = $r;
      }
      ksort($resAr);
      foreach ($resAr as $key => $val) {
         $tpl->set_ar_out($val,2);
      }
    ...


    Evt. hilft dir das noch
          SELECT 1 Kennnung, feld1, ...
          FROM tab1
          UNION
          SELECT 1 Kennnung, feld1, ...
          FROM tab2
          UNION
          SELECT 2 Kennnung, feld1, ...
          FROM tab3
          UNION.
          SELECT 2 Kennnung, feld1, ...
          FROM tab4
          ORDER BY kennung, ...



    Zuletzt modifiziert von OloX am 08.04.2010 - 22:47:37
    PHP, JavaScript, CSS
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Das sollte schon gehen, ggf. mit SELECT * FROM ( ... ) AS all ORDER BY all.time wobei ... deine Abfrage bisher ist.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    raysaw Mitglied
    Registriert seit
    26.12.2009
    Beiträge
    26
    Beitragswertungen
    0 Beitragspunkte
    $sql = "SELECT * FROM `table` WHERE `bedingung` ORDER BY `zeitspalte` ASC";
    $result = db_query($sql);

    while ($row = db_fetch_assoc($result) {
    //deine verarbeitung
    }

    nun die erklärung:
    du nimmst alles von der tabelle auf. das bewerkstelligen wir mit "SELECT * FROM `table`", dann deine bedingung "WHERE `bedingung`" und dann hast du ein "ORDER BY". das bedeutet zu deutsch "SORTIERE". ja wonach denn? "`zeitspalte`". ahh ok. rauf oder runter, das ist mir jetzt egal zunge aber pustekuchen, das ASC dahinter sagt aufsteigend, also fang mit dem kleinsten an und höre mit dem höchsten auf. ASC ist normalerweise voreinstellung bei der "ORDER BY" klausel, aber sicher ist sicher lächeln man weiß ja nie was der hoster gemacht hat.
    in der while schleife jetzt wie gewohnt geht er zeile für zeile durch, und beachtet dabei die reienfolge. probier es einfach aus!

    hier noch eine source:
    sql.1keydata.com/de/sql-order-by.php
    ich war hier und ratet mal was ich für euch mitgebracht habe.
    NICHTS! xD
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    dastiii Mitglied
    Registriert seit
    27.12.2005
    Beiträge
    2.354
    Beitragswertungen
    84 Beitragspunkte
    nett am thread vorbei mit deinem beitrag, hast du dir überhaupt irgendwas durchgelesen?


    Zuletzt modifiziert von DaStIaC am 09.04.2010 - 15:10:00
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    Domme_09 Mitglied
    Registriert seit
    08.07.2008
    Beiträge
    267
    Beitragswertungen
    0 Beitragspunkte
    @ Mairu: Habs so versucht, aber irgendwie ist die Reihenfolge nicht nach Datum sortiert...
    Irgendwie ist der Tag aber aufsteigend sortiert :-D [Kannst dir ja hier mal anschauen: ]www.bvbsupporters-ms.de/index.php?search=bremen] Geil, wusste gar nicht, dass das geht!

    Wie geht's nu weiter? Hab langsam echt keine Ahnung mehr...
    www.bvbsupporters-ms.de
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    Domme_09 Mitglied
    Registriert seit
    08.07.2008
    Beiträge
    267
    Beitragswertungen
    0 Beitragspunkte
    hat niemand ne Idee? :-(
    www.bvbsupporters-ms.de
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Achso, na dann liegts wohl am Format von Time, weil der ja im Format dd.mm.yyyy formatiert ist, wird der auch so sortiert und nicht als zeit, wenn du ihn im format yyyy-mm-dd sortieren würdest, sollte es klappen.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    Domme_09 Mitglied
    Registriert seit
    08.07.2008
    Beiträge
    267
    Beitragswertungen
    0 Beitragspunkte
    Danke Mairu, funktioniert so einwandfrei :-)
    www.bvbsupporters-ms.de
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu HTML, PHP, SQL,...

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten