Ergebnis 1 bis 4 von 4

Thema: Probleme mit SQL Befehl

  1. #1
    HTML Newbie
    Registriert seit
    19.08.2011
    Beiträge
    2
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard Probleme mit SQL Befehl

    Hi Leute,

    Ich versuche mich gerade an einer Abfrage und scheitere scheinbar an einer einfachen Sache.

    PHP-Code:
     /* ############## SPIELERARTEN ANFANG ########### */
       
    $username $db->query("SELECT username, userid FROM bb".$n."_groups LEFT JOIN bb".$n."_users ON userid=userid 
    WHERE groups=groupid=9"
    );
     
    /* ############## SPIELERARTEN ENDE ########### */ 
    Als Fehlermeldung bekomme ich zurück, dass "groups" keine gültige Spalte in der WHERE-Klausel ist

    Ich habe auch zwei Screens angehangen von der Tabelle Gruppe und User hab ich vielleicht dort einen Fehler oder ist mein Code einfach Falsch? Mit $username will ich in einer entsprechenden Datei die Namen aus der Gruppe ausgeben lassen, die ich versuche aufzurufen.

    Liebe grüße
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!
    Angehängte Grafiken Angehängte Grafiken

  2. #2
    Großmeister(in)
    Registriert seit
    09.12.2008
    Ort
    Berlin
    Alter
    38
    Beiträge
    666
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard AW: Probleme mit SQL Befehl

    Die EXAKTE Fehlermeldung als copy/paste wäre besser.

    1. "groups=groupid=9" - Was soll das denn sein? Du kannst nicht 3 Werte auf einmal vergleichen. Davon abgesehen sieht man auf deinem Screenshot der User-Tabelle auf keine Spalte `groups`.
    2. Dein Datenbankdesign scheint mir stark verbesserungswürdig. Wenn ich das richtig sehe, hast du in deiner `groups`-Tabelle für jedes Recht eine eigene Spalte angelegt. Das löst man sauber über eine zweite Tabelle in der die Rechte abgelegt werden, und eine dritte Foreign-Key-Tabelle in der die Rechte den Gruppen zugeordnet werden. Ist doch ne Katastrophe wenn du jedesmal wenn ein neues Recht dazukommt eine neue Spalte in deiner Groups-Tabelle anlegen und neue Queries schreiben musst.
    3. Deine ON-Klausel für den LEFT JOIN kann nicht funktionieren. Sollten tatsächlich beide Tabellen eine Spalte userid haben, so käme die Fehlermeldung "`userid` is ambigious".

    Sag doch mal was du überhaupt bezwecken willst. Ich habe aber das starke Gefühl, dass du vielleicht erst mal noch ein SQL-Tutorial durchackern solltest, mindestens eins zum Thema JOINS. Stichwort: Aliase für Tabellennamen.
    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  3. #3
    HTML Newbie
    Themenstarter

    Registriert seit
    19.08.2011
    Beiträge
    2
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Probleme mit SQL Befehl

    Hallo, die Datenbank ist mit der Installation erstellt worden wozu das Forums gehört. Ich habe diese nicht selber angelegt. So zur groupid=9 das ist die ID von der Gruppe wo ich die User gerne von haben möchte (also die Namen der User die in dieser Gruppe sind).
    Die Fehlermldung sieht so aus:
    Code:
    SQL-DATABASE ERROR
    
    Database error in WoltLab Burning Board: Invalid SQL: SELECT username, userid FROM bb1_groups LEFT JOIN bb1_users ON userid=userid  WHERE groupid=9 
    mysql error: Column 'groupid' in where clause is ambiguous 
    mysql error number: 1052 
    Date: 19.08.2011 @ 23:26 
    Script: /statistik.php 
    Referer:  
    

    Ah okay, wenn es mit dem LEFT JOIN nicht geht nur mit
    Code:
    $username_angel = $db->query("SELECT username, userid, groupid FROM bb".$n."_users WHERE groupid=9");
    geht es auch nicht da bekomme ich dann ausgegegeben angezeigt
    Code:
    Resource id #97


    EDIT: Ich habe in der PHP Datei auch noch andere Abfragen drin die es ja ohne Probleme tun. Wo mir von den Gruppen, die es gibt die Anzahl ausgegeben wird wieviele sich in der Gruppe befinden. Nur jetzt wollte ich versuchen an die Usernamen zu kommen.

    LG
    Geändert von CSB (20.08.2011 um 00:35 Uhr)

  4. #4
    Großmeister(in)
    Registriert seit
    09.12.2008
    Ort
    Berlin
    Alter
    38
    Beiträge
    666
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard AW: Probleme mit SQL Befehl

    Zitat Zitat von CSB Beitrag anzeigen
    Hallo, die Datenbank ist mit der Installation erstellt worden wozu das Forums gehört. Ich habe diese nicht selber angelegt. So zur groupid=9 das ist die ID von der Gruppe wo ich die User gerne von haben möchte (also die Namen der User die in dieser Gruppe sind).
    Die Fehlermldung sieht so aus:
    Code:
    SQL-DATABASE ERROR
    
    Database error in WoltLab Burning Board: Invalid SQL: SELECT username, userid FROM bb1_groups LEFT JOIN bb1_users ON userid=userid  WHERE groupid=9 
    mysql error: Column 'groupid' in where clause is ambiguous 
    mysql error number: 1052 
    Date: 19.08.2011 @ 23:26 
    Script: /statistik.php 
    Referer:  
    


    Die Fehlermeldung besagt, dass es in deiner Abfrage mindestens zwei Tabellen gibt, die eine Spalte 'groupid' haben. Daher musst du in der Abfrage genau angeben auf welches 'groupid' aus welcher Tabelle du dich beziehst. Das machst du indem du in deiner Abfrage statt `groupid` dann `tabellenname`.`groupid` schreibst.
    Du kannst für den Tabellennamen natürlich auch ein Alias vergeben, Beispiel:
    Code:
    SELECT 
        t1.field,t2.field 
    FROM 
        table1 AS t1
        INNER JOIN
            table2 AS t2 ON t2.table1_id=t1.id
    Zitat Zitat von CSB Beitrag anzeigen
    Code:
    $username_angel = $db->query("SELECT username, userid, groupid FROM bb".$n."_users WHERE groupid=9");
    geht es auch nicht da bekomme ich dann ausgegegeben angezeigt
    Code:
    Resource id #97

    Ja, query() gibt dir auch nur einen Verweis auf die Resource zurück, in der die Ergebnisse abgelegt sind. Du musst die aber noch von dort abholen. Je nachdem was für eine Datenbankklasse du verwendest sieht das anders aus.
    Bei mysqli z.B.
    PHP-Code:
    $res $db->query("SELECT username, userid, groupid FROM bb".$n."_users WHERE groupid=9");
    while( 
    $row $res->fetch_assoc() ) {
        echo 
    "<pre>",print_r($row1),"</pre>";

    Geändert von SinnlosS (25.08.2011 um 20:30 Uhr)
    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

Ähnliche Themen

  1. SQL-Befehl Fehler
    Von Hanes im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 4
    Letzter Beitrag: 13.06.2008, 23:51
  2. SQL-Befehl
    Von radeon55 im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 7
    Letzter Beitrag: 01.06.2008, 13:22
  3. cmd befehl
    Von im Forum Computer - Internet Forum
    Antworten: 6
    Letzter Beitrag: 07.09.2007, 18:19
  4. mailto-befehl
    Von olli im Forum HTML & CSS Forum
    Antworten: 1
    Letzter Beitrag: 16.03.2006, 22:41
  5. #top und ? Befehl
    Von Volrath im Forum HTML & CSS Forum
    Antworten: 4
    Letzter Beitrag: 21.12.2004, 18:03

Stichworte

Berechtigungen

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