Ergebnis 1 bis 5 von 5
  1. #1
    CIH-Virus
    Registriert seit
    22.06.2007
    Beiträge
    451

    Standard mysql tabelle anders ordnen

    Code:
    $sql = "SELECT
                    id,
                    username,
    		klick,
                FROM
                    login
                ORDER BY
                    klick DESC;";
    so meine abfrage...
    wenn ich die tabelle jetz aus gebe erhalte ich
    ______________
    |2|HeatshocK1|2|
    |1|HeatshocK|10|

    jetz woll ich fragen wie mann es so machen kann:
    ________________
    |2|HeatshocK1|100|
    |1|HeatshocK |10|
    |3|wwwwwww | 9|
    |4|asdasfdaffff | 3|


  2. #2

    Standard

    $sql ="SELECT id, username, klick FROM login ORDER BY klick DESC";

    Wieso dieser sinnlose aufbau? du hast nach dem Desc ein semicolon gemacht!

    Mfg

    Chaos
    Eine Regierung muß sparsam sein, weil das Geld, das sie erhält, aus dem Blut und Schweiß ihres Volkes stammt.
    Es ist gerecht, daß jeder einzelne dazu beiträgt, die Ausgaben des Staates tragen zu helfen. Aber es ist nicht gerecht, daß er die Hälfte seines jährlichen Einkommens mit dem Staate teilen muß.

    Friedrich II. der Große

  3. #3
    Trojaner
    Registriert seit
    19.01.2007
    Beiträge
    63

    Standard

    Also ich persönlich halte den aufbau für wesentlich besser, als alles in eine zeile zu quetschen. Wenn man jetzt einen größeren sql-query, der mehrere joins, sortierungen, subqueries oder ähnliches hat, in eine zeile packt wird das total unübersichtlich:

    Code:
    $sql = 'SELECT
                tabelle1.spalte1,
                tabelle1.spalte2,
                tabelle1.spalte3,
                tabelle2.spalte1 AS t2_spalte1,
                tabelle2.spalte2 AS t2_spalte2
                COUNT(*) AS rows
            FROM tabelle1 AS tabelle1
            LEFT JOIN tabelle2 AS tabelle2 ON (tabelle2.spalte1 = tabelle1.spalte1)
            RIGHT JOIN tabelle3 AS tabelle3 ON (tabelle3.spalte1 = tabelle2.spalte2)
            WHERE 
                tabelle1.spalte3 > 5
                AND tabelle2.spalte2 == "muh"
                AND tabelle3.spalte1 <> NULL
            GROUP BY
                tabelle1.spalte3
            ORDER BY
                tabelle1.spalte1 ASC,
                tabelle3.spalte1 DESC
            LIMIT 0,10';
    VS
    Code:
    $sql = 'SELECT tabelle1.spalte1, tabelle1.spalte2, tabelle1.spalte3, tabelle2.spalte1 AS t2_spalte1, tabelle2.spalte2 AS t2_spalte2 COUNT(*) AS rows FROM tabelle1 AS tabelle1 LEFT JOIN tabelle2 AS tabelle2 ON (tabelle2.spalte1 = tabelle1.spalte1) RIGHT JOIN tabelle3 AS tabelle3 ON (tabelle3.spalte1 = tabelle2.spalte2) WHERE  tabelle1.spalte3 > 5 AND tabelle2.spalte2 == "muh" AND tabelle3.spalte1 <> NULL GROUP BY tabelle1.spalte3 ORDER BY tabelle1.spalte1 ASC, tabelle3.spalte1 DESC LIMIT 0,10';

    Ansonsten wundert es mich, dass heatshock überhaupt irgendwas als ergebnis seiner abfrage bekommt, denn in seinem query ist ein ganz offensichtlicher syntax-fehler:
    Code:
    $sql = "SELECT
                    id,
                    username,
                    klick, <--- komma darf da nicht hin
                FROM
                    login
                ORDER BY
                    klick DESC;";
    Das simikolon ist zwar aus performance-gründen schlecht, sollte aber eigentlich keine große auswirkungen in diesem query haben.
    MySQL müsste hier nen error #1064 zurückgeben.

  4. #4
    CIH-Virus
    Registriert seit
    22.06.2007
    Beiträge
    451

    Standard

    ja ohne das komma ich hab noch 2 spalten weggenommen.. und hab komma vergessen aber wie mach ich das dann das es so wie oben beschrieben wurde geht...
    so?
    tabelle1.spalte1 ASC,

    ?


  5. #5
    Trojaner
    Registriert seit
    19.01.2007
    Beiträge
    63

    Standard

    Ich verstehe nicht wirklich, wie du das haben möchtest...

    Soll aus diesem code
    Code:
    -------------------
    |1|HeatshocK   |10|
    |2|HeatshocK1  | 2|
    |3|wwwwwww     | 9|
    |4|asdasfdaffff| 3|
    -------------------
    
    
    SELECT
        login.id,
        login.username,
        login.klick
    FROM login
    ORDER BY login.id ASC
    Das werden:
    Code:
    -------------------
    |1|HeatshocK   |10|
    |3|wwwwwww     | 9|
    |4|asdasfdaffff| 3|
    |2|HeatshocK1  | 2|
    -------------------
    
    
    
    SELECT
        login.id,
        login.username,
        login.klick
    FROM login
    ORDER BY login.klick DESC
    Sodass alle reihen nach klick sortiert werden und die zusammenhänge (ID 1 steht für HeatshocK, der 10 klicks hat, ID 2 für HeatshocK1, der 2 klicks hat, usw) bestehen bleiben?

    Oder möchtest du, dass daraus
    Code:
    -------------------
    |1|HeatshocK   |10|
    |2|HeatshocK1  | 9|
    |3|wwwwwww     | 3|
    |4|asdasfdaffff| 2|
    -------------------
    wird?
    Dabei ist immernoch nach ID geordnet, aber gleichzeitig nach klicks. Der zusammenhang geht da natürlich komplett verloren... (Der mit der kleinsten ID hat auch die größten klicks, der mit der zweitgrößten ID hat die zweitgrößte anzahl an klicks, usw).
    Denn so wüsste ich nicht, wie das in einem query zu lösen wäre, nur in 2.

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •