php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.12.2011, 21:35  
Benutzer
 
Registriert seit: 09.11.2003
Beiträge: 91
tonne zeigte ein beschämendes Verhalten in der Vergangenheit
Standard MySQL mit Left Joint liefert nur ein Ergebnis

Ich habe zwei Tabellen, benutzer und formular, welcher über eine n:m beziehung miteinander verbunden sind.
Ich möchte gerne alle Benutzer, die zu einem bestimmten Formular zugeordnet sind, auslesen, und habe dafür den folgenden SQL-Query genutzt:

Code:
 $sql = "SELECT 
                        b.id,
                        b.benutzername
                    FROM 
                        benutzer b
                    LEFT JOIN 
                        benutzerHatZugriff bhz
                      ON
                        b.id = bhz.benutzer
                   LEFT JOIN
                        formular f
                      ON
                        f.id = bhz.formular
                    WHERE
                        f.id = '".$id."'";
jetzt wird aber immer nur ein Benutzer ausgelesen (oder keiner, wenn keiner vorhanden ist). Was muss ich tun, damit alle Benutzer ausgelesen werden (ich habe das ResultSet mit mysql_fetch_object ausgelesen)
__________________
Was soll ich denn nun in meine sig einfügen????
tonne ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 24.12.2011, 11:24  
Erfahrener Benutzer
 
Registriert seit: 01.06.2008
Beiträge: 179
PHP-Kenntnisse:
Fortgeschritten
Daniel befindet sich auf einem aufstrebenden Ast
Daniel eine Nachricht über ICQ schicken
Standard

Du willst also alle Benutzer haben, die dem Formular zugeordnet sind, ergo auch in der Tabelle benutzerHatZugriff stehen, richtig?

Falls dem so ist, wäre das erste LEFT JOIN relativ zweckfrei, ein INNER JOIN würde es hier tun.
Ebenso sollte der zweite Join ein INNER JOIN sein, da zu jedem EIntrag in benutzerHatZugriff ja sicherlich ein Forumlar existiert, richtig?

Da du übrigens ja offensichtlich nur die Benutzer brauchst, brauchst du die Tabelle forumlar gar nicht zu joinen. Ich denke, folgender Query sollte genügen:

Code:
SELECT b.id, b.benutzername
FROM benutzerHatZugriff AS bhz
INNER JOIN benutzer AS b ON bhz.benutzer = b.id
WHERE bhz.formular = %id;
__________________
Je mehr ich lerne, desto mehr wird mir bewusst, dass ich eigentlich nichts weiß.
Daniel ist offline   Mit Zitat antworten
Alt 24.12.2011, 16:22  
Benutzer
 
Registriert seit: 09.11.2003
Beiträge: 91
tonne zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Yo, funktioniert

wo genau liegt denn der unterschied zwischen LEFT JOIN und INNER JOIN?
__________________
Was soll ich denn nun in meine sig einfügen????
tonne ist offline   Mit Zitat antworten
Alt 24.12.2011, 16:29  
Erfahrener Benutzer
 
Registriert seit: 01.06.2008
Beiträge: 179
PHP-Kenntnisse:
Fortgeschritten
Daniel befindet sich auf einem aufstrebenden Ast
Daniel eine Nachricht über ICQ schicken
Standard

Genaue Informationen dazu findest du im Mysql Manual:

http://dev.mysql.com/doc/refman/5.1/de/join.html

Grundsätzlich listet ein INNER JOIN nur Datensätze auf, die (nach der ON Klausel) in beiden Tabellen enthalten sind. Hat also ein User kein Eintrag in der benutzerHatZugriff Tabelle, erscheint er nicht im Ergebnis.

Beim LEFT JOIN werden alle Datensätze der linken Tabelle gelistet, egal ob die ein Äquivalent in der rechten Tabelle haben. Haben sie keins, werden leere Felder mit NULL-Werten gefüllt.
__________________
Je mehr ich lerne, desto mehr wird mir bewusst, dass ich eigentlich nichts weiß.
Daniel ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PHP Zugriff auf MySQL Community Server gewähren daemonTutorials Datenbanken 8 21.02.2011 12:28
MySQL - LEFT JOIN Query aus mehreren Tabellen ~fransen~ Datenbanken 13 28.01.2011 18:49
MYSQL - select abfrage liefert falsches ergebniss wealer PHP Einsteiger 2 23.12.2010 14:07
[Erledigt] MySQL Abfrage (mehrere Tabellen) Abfragen von welcher Tabelle das Ergebnis sdcleitung PHP Tipps 2010 6 07.11.2010 17:54
[Erledigt] mysql abfrage liefert leeren wert Andrew094 PHP Tipps 2010 2 24.10.2010 13:07
nbtstat liefert kein Ergebnis Root-2k PHP Tipps 2010 5 06.06.2010 13:31
phpinfo liefert kein Ergebnis haiflosse PHP Tipps 2010 20 08.05.2010 23:07
weitere if-Abfrage liefert kein Ergebnis evimartin PHP Tipps 2009 11 17.09.2009 13:52
[Erledigt] Kein Ergebnis bei SELECT (MySQL 4.1.9) dr.e. Datenbanken 4 15.06.2008 19:54
MySQL Server startet nicht mehr richtig... Datenbanken 16 03.03.2006 19:40
Überprüfung ob Afrage Ergebnis liefert PHP Tipps 2007 4 21.11.2005 15:54
SQL liefert falsches Ergebnis Plague Datenbanken 2 29.09.2005 22:45
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
Überprüfen, ob MySQL query einen Datensatz liefert Jojo1 PHP Tipps 2005 14 22.04.2005 17:22
get_cfg_var liefert kein Ergebnis zurück PHP Tipps 2005 3 05.01.2005 13:31

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
left join liefert mehr ergebnisse, bis wohin liefert bhz?, join liefert mehr als eine ergebniszeile, mysql nur ergebnisse mit join, join liefert falsche ergebnisse, php mysql nur ein ergebnis, mysql innerjoin nur ein ergebnis, mysql join nur ein datensatz, nur unterschied zwischen zewei tabellen mysql, mysql abfragen left join leere felder default, mysql query left join on, php suche nur ein ergebnis, mysql left join leere felder, mysql nur ein ergebnis

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:21 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum