php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 13.12.2011, 22:44  
Erfahrener Benutzer
 
Registriert seit: 01.12.2009
Beiträge: 109
PHP-Kenntnisse:
Anfänger
Dreamwatcher befindet sich auf einem aufstrebenden Ast
Standard RIGHT JOIN funktioniert nicht

Hallo,

ich weiß, die Überschrift ist schlecht gewählt, aber ich kann es wirklich nicht besser in kurzen Worten beschreiben.

Ich habe zwei Tabellen:

Eine mit Fragen (id, frage, order)
und eine mit antworten (id, frage_id, user_id, antwort)

Nun gibt es viele Fragen und ich möchte für jeden Benutzer alle antworten, aber auch leere Ergebnisse, falls jemand die frage noch nicht beantwortet hat.

Für mich war klar, dass ich einen Join machen muss, allerdings passiert nichts.
Ich kriege noch immer keine leeren antworten, wenn die Frage doch vorhanden ist.

Code:
SELECT 
a.user_id, 
a.antwort, 
f.frage
FROM  
`antworten` AS a
RIGHT JOIN  `frage` f ON f.id = a.frage_id
ORDER BY a.id, a.user_id, f.`order`
Es ist egal, ob ich RIGHT/LEFT (OUTER) JOIN schreibe. Alle Varianten geben mir für einen Benutzer nicht die nicht vorhandenen Antworten aus.

Normalerweise nutze ich Oracle, habe also lange nicht mehr mit MySql gearbeitet. Was mache ich denn falsch?
Dreamwatcher ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 13.12.2011, 23:31  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Es ist egal, ob ich RIGHT/LEFT (OUTER) JOIN schreibe.
Nö, ist es nicht.
Zitat:
Alle Varianten geben mir für einen Benutzer nicht die nicht vorhandenen Antworten aus.
Solange Du das nicht näher beschreibst, behaupte ich das Gegenteil.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 14.12.2011, 00:07  
Erfahrener Benutzer
 
Registriert seit: 01.12.2009
Beiträge: 109
PHP-Kenntnisse:
Anfänger
Dreamwatcher befindet sich auf einem aufstrebenden Ast
Standard

mir ist klar, dass es nicht dass es eigentlich nicht das gleiche ist.

Aber was soll ich weiter dazu beschreiben?
Ich bekomme immer genau das gleiche Ergebnis zurück...
Aber müsste ich nicht wenn ich count(*) und group by a.user_id mache überall die gleiche anzahl bekommen? Also die Anzahl aller Fragen?

edit:
Also testen tue ich es grade nur in phpMyAdmin, damit ich Fehler durch meine Programmierung definitiv ausschließen kann.

Code:
SELECT COUNT( * ) 
FROM  `antworten` AS a
RIGHT OUTER JOIN  `frage` f ON f.id = a.frage_id
GROUP BY a.user_id
LIMIT 0 , 60

COUNT( * )
29
23
33
32
33
33
33
34
34
Code:
SELECT COUNT( * ) 
FROM  `antworten` AS a
LEFT OUTER JOIN  `frage` f ON f.id = a.frage_id
GROUP BY a.user_id
LIMIT 0 , 60

COUNT( * )
29
23
33
32
33
33
33
34
34
Code:
SELECT COUNT( * ) 
FROM  `antworten` AS a
RIGHT JOIN  `frage` f ON f.id = a.frage_id
GROUP BY a.user_id
LIMIT 0 , 60

COUNT( * )
29
23
33
32
33
33
33
34
34
Code:
SELECT COUNT( * ) 
FROM  `antworten` AS a
LEFT JOIN  `frage` f ON f.id = a.frage_id
GROUP BY a.user_id
LIMIT 0 , 60

COUNT( * )
29
23
33
32
33
33
33
34
34

Geändert von Dreamwatcher (14.12.2011 um 00:34 Uhr).
Dreamwatcher ist offline   Mit Zitat antworten
Alt 14.12.2011, 01:28  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Aber müsste ich nicht wenn ich count(*) und group by a.user_id mache überall die gleiche anzahl bekommen?
Bekommst Du ja.
Zitat:
Also die Anzahl aller Fragen?
Nö. Du gruppierst nach User, also bekommste auch User-abhängige Ergebnisse.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 14.12.2011, 01:59  
Erfahrener Benutzer
 
Registriert seit: 01.12.2009
Beiträge: 109
PHP-Kenntnisse:
Anfänger
Dreamwatcher befindet sich auf einem aufstrebenden Ast
Standard

Okay, das ändert ja nichts an dem Hauptproblem, denn wenn ich mir das nach der order nummer sortiert ausgeben lasse, fehlt trotzdem mal die 17., dann mal die 28. frage...
Dreamwatcher ist offline   Mit Zitat antworten
Alt 15.12.2011, 16:36  
Erfahrener Benutzer
 
Registriert seit: 02.09.2009
Beiträge: 1.019
PHP-Kenntnisse:
Fortgeschritten
mquadrat befindet sich auf einem aufstrebenden Ast
Standard

Du musst noch deine User-Tabelle joinen. Sonst bekommst du für jede Frage nur einen "nicht beantwortet" Datensatz auch wenn den 10 User nicht beantwortet haben. Die Felder von a sind in dem Fall ja immer null.
__________________
Wir suchen PHP Entwickler (Vollzeit) im Raum Darmstadt / Rhein-Main. Infos via E-Mail mueller@new-frontiers.de
mquadrat 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
Probleme mit SQL Query (Join über mehrere Tabellen) smilla Datenbanken 1 04.10.2011 00:09
[Erledigt] left join Funktioniert mit PHP nicht themonk PHP Einsteiger 13 12.08.2011 12:45
Join Abfrage auf ODBC Datenbank da.eXecutoR PHP-Fortgeschrittene 15 05.05.2011 17:28
MySQL - LEFT JOIN Query aus mehreren Tabellen ~fransen~ Datenbanken 13 28.01.2011 18:49
OUTER JOIN Abfrage, die evtl. keine Treffer zurückgeben könnte noop Datenbanken 1 27.01.2011 20:23
Problem mit Abfrage - join, inner join, distinct? Gachet01 Datenbanken 2 27.01.2011 06:49
Persistence Framework #Avedo Software-Design 37 28.03.2009 17:32
Bräuchte hilfe bei schleifenproblem innerhalb SQL anweisung Kronic73 Datenbanken 8 01.03.2009 01:10
[Erledigt] multiple choice Problem Rilana PHP Tipps 2009 23 19.01.2009 13:50
[Erledigt] Query mit JOIN funktioniert in PHP nicht (bei mir...) b_i_g_b_o Datenbanken 2 27.11.2008 22:54
Left Join funktioniert nicht richtig, nicht alle Werte.... Gdriver PHP Tipps 2007 9 20.08.2007 15:56
Session funktioniert nicht bei session.use_cookies = Off Quagga PHP Tipps 2007 13 13.01.2007 18:27
Join auf 2 verschiedene Felder Tommek Datenbanken 6 25.07.2006 20:39
inner join aus db PHP Tipps 2006 8 22.01.2006 01:23


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:07 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