| | | | | | | | | | |||||||
![]() | ![]() | | |||||||||||||
| |||||||||||||||
| | #1 |
| Zugriff eingeschränkt, e-Mailadresse ungültig Reg.-Datum: 05.06.2006 |
Ich habe 2 Probleme bei einer PHP Anwendung mit meinen SQL Abfragen zum Einen: Wenn ich diese SQL Abfrage ausführe funktioniert alles wunderbar, aber wenn meine Tabellen leer sind leider nicht. es muss also in der tabelle b_posts mind. 2 Einträge geben, die aufeinander referenziert sind. Warum kann er dann nicht einfach 0 ausgeben? Code: SELECT f.parentID, f.ID, f.name, f.description, f.lastposttime, f.lastpost, f.lastpostuser, f.sort, r.read, r.write, r.edit, p.numtopics, p2.numposts FROM b_forums f LEFT JOIN ( SELECT COUNT(p.ID) As numtopics, p.postforum, p.threadparent FROM b_posts p WHERE p.threadparent ='0') p ON f.ID = p.postforum LEFT JOIN ( SELECT COUNT(p2.ID) As numposts, p2.postforum, p2.threadparent FROM b_posts p2 WHERE p2.threadparent<>'0' ) p2 ON f.ID = p2.postforum INNER JOIN rlf_forum_rights r ON f.ID = r.forumID WHERE r.roleID='0' AND r.read = '1' Order by f.sort ASC |
| | |
| | #2 |
Moderator JavaReg.-Datum: 24.07.2007 Ort: auf nem Berg |
Welches DBMS? Und was heißt "funktioniert nicht" !? Bitte das Problem präzise beschreiben!
__________________ In attempting to construct such machines we should not be irreverently usurping His power of creating souls, any more than we are in the procreation of children: rather we are, in either case, instruments of His will providing mansions for the souls that He creates. (Alan Turing) |
| | |
| | #3 |
| Zugriff eingeschränkt, e-Mailadresse ungültig Reg.-Datum: 05.06.2006 |
also ich arbeite mit mysql als DBMS. Wenn alles funktioniert sieht es so aus: http://www.flipsoft24.de/images/sql.jpg Das geht aber nur wenn BEiträge vorhanden sind... Sollte jetzt die Tabelle b_posts leer sein (also quasi noch kein Beitrag vorhanden) bekomme ich einen Fehler Als Fehlermeldung bekomme ich folgendes #1048 - Column 'postforum' cannot be null Außerdem hätte ich es gerne, dass statt NULL 0 ausgegeben wird |
| | |
| | #4 | |
Moderator JavaReg.-Datum: 24.07.2007 Ort: auf nem Berg | Zitat:
Es ist sehr schwierig Dein Statement zu verstehen ohne die komplette Struktur zu kennen, darum denke ich, dass Du entweder das Statement so verändern musst, dass das Feld eben "Null" sein darf oder Du innerhalb des Statements prüfen musst, ob Daten vorhanden sind, wobei ich hier eine entsprechende Subquery mit If erzeugen würde MySQL :: MySQL 5.1 Referenzhandbuch :: 12.2 Ablaufsteuerungsfunktionen
__________________ In attempting to construct such machines we should not be irreverently usurping His power of creating souls, any more than we are in the procreation of children: rather we are, in either case, instruments of His will providing mansions for the souls that He creates. (Alan Turing) | |
| | |
| | #5 |
| Zugriff eingeschränkt, e-Mailadresse ungültig Reg.-Datum: 05.06.2006 |
super. ich hab jetzt null erlaubt und es funktioniert. cool...danke dir. |
| | |
| | #6 |
| Zugriff eingeschränkt, e-Mailadresse ungültig Reg.-Datum: 05.06.2006 |
aber das mit statt NULL 0 ausgeben funktioniert nicht. kannst du mir sagen wie ich das einbauen kann? ich habe es mit IFNULL(p.numtopics,0) versucht, das gibt aber den Fehler, dass numtopics nicht mehr im abfrageergebnis ist. wenn ich es im join ändere funktionierts auch nicht, gibt aber auch keinen fehler |
| | |
| | #7 |
| Zugriff eingeschränkt, e-Mailadresse ungültig Reg.-Datum: 05.06.2006 |
ok jetzt funktionierts... supii
|
| | |
| | #8 |
| Zugriff eingeschränkt, e-Mailadresse ungültig Reg.-Datum: 05.06.2006 |
Jetzt habe ich aber noch ein zweites Problem mit folgender Abfrage SELECT p.ID, p.title, p.telapsed, p.timepost, p.lastpost, p.postforum, p.value, p.locked, p.views, p2.numreplies FROM b_posts p LEFT JOIN ( SELECT COUNT(p2.ID) As numreplies, p2.threadparent FROM b_posts p2 GROUP BY p2.ID) p2 ON p.ID = p2.threadparent WHERE p.threadparent='0' AND p.postforum='3' order by p.value DESC, p.telapsed DESC limit 0, 15 Statt mir jetzt eine Zeile auszugeben, in der bei numreplies 2 steht, gibt er mir 2mal die gleiche zeile aus mit jeweils numreplies 1... das ist aber leider nicht das was ich brauche... was mach ich hier falsch? |
| | |
| | #9 | |
Moderator JavaReg.-Datum: 24.07.2007 Ort: auf nem Berg | Zitat:
Es ist die Frage woher mehrfache Datensätze kommen, aus der Subquery, was eigentlich das Group ausschließen sollte, sofern p2.id unique ist oder aus dem left join, was wahrscheinlicher ist. Ein Tipp für Fragen nach Querys: Poste immer zu dem Query was es inhaltlich bedeuten soll, Tabellenstruktur und evtl ein paar Beispieldatensätze. Meisten kann man das Query anders formulieren, so dass es ein korrektes Ergebnis liefert. Im Moment kann man nur auf Deinen Querys herum raten
__________________ In attempting to construct such machines we should not be irreverently usurping His power of creating souls, any more than we are in the procreation of children: rather we are, in either case, instruments of His will providing mansions for the souls that He creates. (Alan Turing) | |
| | |
![]() |
| |||||