Super!!! Hat geklappt!!! Tausend Dank an alle Helfer...
Beiträge von Sankt Peter im Thema „Hilfe zu Mysql“
-
-
Ok ... ich werde es mal probieren - aber erst nachher... Danke für die Hilfe!!!
Ist das für php so richtig:
$db_top = $db->query("SELECT p.paarid FROM bb".$n."_kt_paare p LEFT JOIN bb".$n."_kt_usertipps u ON (p.paarid=u.paarid AND u.userid='".$zuser."') WHERE u.paarid is null");
-
Super - also jetzt geht es schon mal - macht aber noch nicht das, was es soll...
In einer Tabelle sollen für einen bestimmten User Kicktipps eingetragen werden, und zwar für alle Spiele, die er noch nicht getippt hat... Das funktioniert nicht - derzeit werden 0 Tipps eingetragen...
Irgendeine Idee, warum diese Abfrage anscheinend inhaltlich noch etwas anderes tut, als die ursprüngliche? Das "IS NULL" stimmt doch nicht - oder?
Also ich benötige irgendwie eine Abfrage die folgendes macht:
- Schaue in der Tabelle KT_PAARE welche Spiele es gibt und prüfe dann in der Tabelle KT_USERTIPPS welche Spiele ein bestimmter Tipper davon schon getippt hat. Diese sollen nicht mit selektiert werden. Das Ergebnis sind also alle tippbaren Spiele, die dieser Spieler noch nicht getippt hat.
Für diese wird dann im weiteren Quellcode ein Zufallstipp eingetragen.
-
Ok, Syntax war wirklich noch falsch... Tausende von Klammern...
Jetzt ist der Syntax Fehler weg aber der SQL Fehler wieder da (mit der neuen Abfrage):
ZitatSQL-DATABASE ERROR
Database error in WoltLab Burning Board (2.3.6): Invalid SQL: SELECT * FROM bb1_kt_paare p LEFT JOIN bb1_kt_usertipps u ON p.paarid = u.paarid WHERE u.paarid is NULL AND u.userid = 615)
mysql error: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
mysql error number: 1064
mysql version: 4.0.27-standard
php version: 4.4.9
Date: 08.07.2009 @ 13:21 -
Schon klar...
Also die alte Zeile sieht so aus:
$db_top = $db->query("SELECT * FROM bb".$n."_kt_paare p WHERE p.paarid NOT IN (SELECT u.paarid FROM bb".$n."_kt_usertipps u WHERE p.paarid = u.paarid AND u.userid = '".$zuser."')");
Und die neue Zeile dah dann so aus:
$db_top = $db->query("SELECT * FROM bb".$n."_kt_paare p LEFT JOIN bb".$n."_kt_usertipps u ON p.paarid = u.paarid WHERE u.paarid is NULL AND u.userid = ".$zuser.")";
Müsste doch richtig sein...
-
Zitat
Original von Eric
Ich bin mir nicht 100% sicher, ob nicht statt... WHERE NOT p.paarid IN ( ...
die richtige Syntax
... WHERE p.paarid NOT IN ( ...
wäre.
Funktioniert auch nicht...
Zitat
Ansonsten nach Attilas Anleitung umgestellt müsste das wohl so aussehen:("SELECT * FROM bb".$n."_kt_paare p LEFT JOIN bb".$n."_kt_usertipps u
ON p.paarid = u.paarid WHERE u.paarid is NULL AND u.userid = ".$zuser.")"Ob das ganze inhaltlich dann auch noch macht was Du vor hast, ist dann natürlich auch noch eine ganz andere Frage... (Du suchst alle Einträge in p, die nicht zu einem festen User aus u gehören?)
Das bringt bei mir folgenden Fehler:
ZitatParse error: syntax error, unexpected T_STRING in /homepages/37/d247992905/htdocs/wbb2/kt_admin.php on line 1312
-
Oh, Danke für den Link - der könnte auf den ersten Blick weiterhelfen - muß ich mir allerdings mal in Ruhe zu Gemüte führen...
Ich kann mich noch erinnern, wie ich in der 11. Klasse Informatik gewählt hatte. Zwei Wochen später wurde in der Schule eingebrochen und die Computer geklaut... Als Ersatz haben wir dann Datenbanktheorie gemacht - man haben wir uns gefreut
-
Zitat
Original von unittype001
Öhm, die Verwendung von p.paarid scheint hier falsch zu sein. Statt eines Subselects solltest Du vielleicht eher einen LeftJoin der beiden Tabellen machen und dann die WHERE-Klausel darauf anwenden..Probiers mal.
Ja, irgendwie hängt er an dem "IN"...
Leider sind meine SQL Zeiten geschätzte 10 und gefühlte 20 Jahre her. Eine normale Select Anweisung ist ja noch machbar aber diese verschachtelten Dinge ... mhhhh?!? Gibt es irgendjemanden, der so etwas aus dem Ärmel schütteln kann? *hoff*
-
Das Problem bleibt... der Fehler liegt ja irgendwie zu Beginn des 2. Selects...
-
Irgendeiner eine Idee, warum folgende Zeile:
Code$db_top = $db->query("SELECT * FROM bb".$n."_kt_paare p WHERE NOT p.paarid IN (SELECT u.paarid FROM bb".$n."_kt_usertipps u WHERE p.paarid = u.paarid AND u.userid = ".$zuser.")");
einen Mysql Fehler 1064 auswirft?
ZitatSQL-DATABASE ERROR
Database error in WoltLab Burning Board (2.3.6): Invalid SQL: SELECT * FROM bb1_kt_paare p WHERE NOT p.paarid IN (SELECT u.paarid FROM bb1_kt_usertipps u WHERE p.paarid = u.paarid AND u.userid = '615')
mysql error: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT u.paarid FROM bb1_kt_usertipps u WHERE p.paarid = u.paar
mysql error number: 1064
mysql version: 4.0.27-standard
php version: 4.4.9
Date: 07.07.2009 @ 23:28