Query: If abfrage wie?

  • Hallo,



    hab eine frage zum If abfrage in einen Query:




    PHP
    $sqls ="SELECT * FROM $dbListe WHERE Name=? AND CASE WHEN $dbListeNameAdmin < 2";


    Ich möchte das wenn ein Spieler Admin ist sozusagen ab level 2 nicht angezeigt werden soll bei unserer rangliste .



    So scheint es nicht zu funktionieren ?(



    Fg

  • PHP
    $sqls ="SELECT * FROM $dbListe WHERE Name=? AND $dbListeNameAdmin < 2";

    scheint irgendwie nicht zu funktionieren.



    Jetz zeigt er keine User mehr an.



    Also mann ist ab rang2 Admin.



    Desweiterin eine Frage:




    PHP
    $sql = "SELECT TOP 10 * FROM $dbListe ORDER BY $dbListeNameLevel DESC, $dbListeNameLevelXP DESC AND $dbListeNameAdmin > 2";
    
    
    Ist das so richtig gemacht? Also am ende ?
  • Danke für das Angebot :)


    Habe ein neues Problem und weiss jetz warum es nicht geht.


    Und zwar haben wir 2 Datenbanken ( 1 Charakter , 1 Account ).


    Beide tabellen besitzen die gleiche ID ( Heißt : In der Charakter steht ID 5 und Account das gleiche )


    Ich habe das versucht:



    Scheint aber nicht wirklich zu funktionieren. Es müsste ja eigentlich durch die schleife die gleiche ID haben oder?


    Würde mich sehr freuen wenn jemand mir bis morgen helfen kann :)


    Und könntet ihr mir sagen wo de fehler liegt?

  • Wie heissen die Tabellenfelder, die du abfragen möchtest (bei beiden Tabellen) und wie heisst das ID Feld bei beiden?
    Warum ich frage, man kann mit aliases arbeiten. Beispiel:


    SQL
    SELECT table1.id, table1.name, table1.level, table2.id from tabelle_top_10 as table1, tabelle_accounts as table2 WHERE table1.id = table2.id ORDER BY table1.name ASC LIMIT 10;

    Dieser Query bewirkt folgendes:

    • es werden nur die Felder ID, NAME, LEVEL aus der Tabelle tabelle_top_10 ausgegeben (das as table1 ist eine Art Verlinkung)
    • weiterhin wird das Feld ID aus der Tabelle tabelle_accounts ausgegeben
    • die WHERE Klausel bestimmt nun, daß die Ausgabe ID aus Tabelle tabelle_top_10 gleich mit der ID aus der zweiten Tabelle tabelle_accounts ist
    • ORDER BY sortiert die Ausgabe nun nach NAME aus der Tabelle tabelle_accounts aufsteigend (also A-Z)
    • LIMIT 10 begrenzt die Ausgabe auf max. 10 Ergebnisse

    Fertig, alles in einem Query-String und nur ein DB Zugriff für das, was du machen möchtest.

  • Achso total vergessen zu antworten :)


    Haben es hibbekommen :


    PHP
    $sql = "SELECT TOP 10 * FROM $dbListe inner join $dbAccount on AccountId = CharacterId where $dbListeNameAdmin < 2 ORDER BY $dbListeNameLevel DESC, $dbListeNameLevelXP DESC";

    Danke trotzdem