tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
512
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Oct 2002
    Ort
    Eckernförde, S.-H.
    Beiträge
    623
    Hallo an alle Hilf-Wütigen,

    folgende Tabelle

    id ... datum ............ von.......bis.........wer
    1......2003-12-01....12:00...18:00.....1
    2......2003-12-01....10:00...16:00.....2
    3......2003-12-02.....11:00..19:00.....2
    4......2003-12-02.....14:00..17:00 ....1
    5......2003-12-03.....09:00...16:00....2
    6......2003-12-03.....10:00...18:00....1

    Nun möchte ich diese Schichten farbig ausgeben (1=blau | 2=rot).
    Dabei ist bedingung, dass die Farben immer abwechselnd untereinander stehen, damit man einen besseren Überblick hat.
    Bisher hatte ich immer ORDER BY datum in der Abfrage stehen, was aber nicht ausreicht, da der Wert "wer" nicht immer abwechselnd 1 2 1 2 1 2 ist.

    Wie kann ich die Abfrage umstrukturieren, damit auch der Wert "wer" berücksichtigt wird und immer wie gewüscht ausgegeben wird.

    Ich habe es schon so versucht: GROUP BY datum ORDER BY wer ... leider führte das nicht zum gewünschten Erfolg. Habe ich da irgendetwas missverstanden?

    Bitte klärt mich auf

    Danke!
    Geändert von Eiszwerg (01.12.03 um 20:32 Uhr)
     

  2. #2
    Daxi Daxi ist offline Mitglied Brokat
    Registriert seit
    Jul 2003
    Ort
    PAF
    Beiträge
    396
    Wie willst du das ganze genau sortieren?
    1. nach wer
    2. Nach Datum, Startzeit, Endzeit
    ?

    Ich würde da etwas anders rangehen, da ORDER BY soetwas nicht unterstützt (meines wissens)...

    Mache 2 Abfragen.
    1. Abfrage: SELECT * FROM tabelle WHERE wer=1
    2. Abfrage: SELECT * FROM tabelle WHERE wer=2

    Dann gehst du das ganze so durch:

    PHP-Code:
    <?php
    $conn 
    mysql_connect($host$user$pass);
    mysql_select_db($database$conn);
    $res1 mysql_query("SELECT * FROM tabelle WHERE wer=1"$conn);
    $res2 mysql_query("SELECT * FROM tabelle WHERE wer=2"$conn);
    $anz1 mysql_num_rows($res1);
    $anz2 mysql_num_rows($res2);
    $anz = ($anz1 $anz2) ? $anz1 $anz2;

    echo 
    "<table>\n";
    for(
    $i=1;$i<=$anz;$i++) {
     if(
    $i<$anz1) {
      
    $data mysql_fetch_array($res1MYSQL_ASSOC);
      
    outputData($data);
     }
     if(
    $i<$anz2) {
      
    $data mysql_fetch_array($res2MYSQL_ASSOC);
      
    outputData($data);
     }
    }
    echo 
    "</table>\n";

    function 
    outputData($data) {
     
    $col = ($data["wer"] == 1) ? "#B3B5FF" "#E88686";
     echo 
    "<tr><td bgcolor=\"".$col."\">".$data["datum"]."</td>
    <td bgcolor=\""
    .$col."\">".$data["von"]."</td>
    <td bgcolor=\""
    .$col."\">".$data["bis"]."</td></tr>\n";
    }
    ?>
    Geändert von Daxi (02.12.03 um 17:18 Uhr)
     

  3. #3
    Registriert seit
    Oct 2002
    Ort
    Eckernförde, S.-H.
    Beiträge
    623
    Hui,

    da hast Du ja ganz schön vorgelegt
    Danke erstmal dafür.
    Werde mal schauen, wieweit ich da durchsteige und was ich davon verwenden kann.
    Um Deine Frage zu beantworten. Ich möchte primär nach Datum sortieren und sekundär einfach erzwingen, dass die Datensätze abwechselnd nach "wer " gelistet werden.

    Beispiel:

    1 2003-12-02 07:00 14:00 1
    2 2003-12-02 08:00 15:00 2
    3 2003-12-02 09:00 17:00 1
    4 2003-12-02 08:00 15:00 2

    Sodala... ich stürze mich dann mal in meinen Code

    Gruss ICEzW3RG
     

  4. #4
    Registriert seit
    Dec 2001
    Ort
    Apelnstedt (Niedersachsen)
    Beiträge
    149
    Moin,

    ......order by Datum, wer........

    Das sollte auch das gewünschte Ergenbnis bringen.
     
    Gruß

    Tex

  5. #5
    Daxi Daxi ist offline Mitglied Brokat
    Registriert seit
    Jul 2003
    Ort
    PAF
    Beiträge
    396
    @Texaner:

    Die von dir vorgeschlagene Abfrage bringt ihm nur eins...
    Es wird nach Datum sortiert.
    Nach wer soll aber nicht "sortiert" werden sondern der Wert 1 und 2 sollen sich abwechseln...

    Hier der Code, der dich noch mit der Datumssortierung weiterbringt...

    PHP-Code:
    <?php
    $conn 
    mysql_connect($host$user$pass);
    mysql_select_db($database$conn);
    $res1 mysql_query("SELECT * FROM tabelle WHERE wer=1 ORDER BY datum ASC, von ASC, bis ASC"$conn);
    $res2 mysql_query("SELECT * FROM tabelle WHERE wer=2 ORDER BY datum ASC, von ASC, bis ASC"$conn);
    $anz1 mysql_num_rows($res1);
    $anz2 mysql_num_rows($res2);
    $anz = ($anz1 $anz2) ? $anz1 $anz2;

    echo 
    "<table>\n";
    for(
    $i=1;$i<=$anz;$i++) {
     if(
    $i<$anz1) {
      
    $data mysql_fetch_array($res1MYSQL_ASSOC);
      
    outputData($data);
     }
     if(
    $i<$anz2) {
      
    $data mysql_fetch_array($res2MYSQL_ASSOC);
      
    outputData($data);
     }
    }
    echo 
    "</table>\n";

    function 
    outputData($data) {
     
    $col = ($data["wer"] == 1) ? "#B3B5FF" "#E88686";
     echo 
    "<tr><td bgcolor=\"".$col."\">".$data["datum"]."</td>
    <td bgcolor=\""
    .$col."\">".$data["von"]."</td>
    <td bgcolor=\""
    .$col."\">".$data["bis"]."</td></tr>\n";
    }
    ?>
     

  6. #6
    Registriert seit
    Oct 2002
    Ort
    Eckernförde, S.-H.
    Beiträge
    623
    -=] TOPIC CLOSED [=-

    Habe mich von wer=2 getrennt und nun brauch ich das nicht mehr wissen
     

Ähnliche Themen

  1. GROUP BY + ORDER BY `id`
    Von Sasser im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 20.12.08, 05:54
  2. GROUP BY in Kombination mit ORDER BY [MySQL]
    Von versuch13 im Forum Relationale Datenbanksysteme
    Antworten: 7
    Letzter Beitrag: 07.03.08, 15:05
  3. mal wieder DINSTINCT, GROUP BY und ORDER
    Von Pullmann im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 04.10.06, 14:30
  4. Group and order
    Von bpkp im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 27.01.05, 17:13
  5. GROUP und ORDER
    Von EM-Autotechnik im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 18.05.04, 14:44