![]() |
MYSQL Unterabfrage
Bevor ich mit Details nerve, mal eine allgemein Frage:
Ich habe ein Unterabfrage nach folgendem Schema: SELECT .. FROM .. WHERE .. IN (SELECT .. FROM .. WHERE) Ich nehme an, dass MYSQL zuerst die Klammer-Abfrage ausführt, danach die vorgestellte. Was passiert dann, wird aus beiden Ergebnissen die Schnittmenge ausgegeben? Beispiel: 1,4,6,8,9 IN (3,4,7,8) ergäbe als Ergebnis : 4,8 ? |
Ja, er würde 4 & 8 als gültig ansehen
pong |
Mhhh, dann hab ich ein Problem: beide Abfragen liefern einzeln das korrekte Ergebnis, verschachtelt aber keinen einzigen Treffer, obwohl eine Schnittmenge vorhanden ist. Die Teilergebnisse beziehen sich auf ein und dieselbe Tabelle, könnte das ein Grund sein?
|
zeig mal das gesamte Query, mit dem beschnittenen fangt man nicht viel an
pong |
SELECT alle.user_ID,zuname FROM alle,fagrpuser WHERE user.tag!=0 AND (fachgruppe_ID='13' AND alle.user_ID=fagrpuser.user_ID)
IN (SELECT alle.user_ID FROM alle,zuteilung where (substr(zuteilung.klname,1,1)>"4" AND jahr="0708" AND alle.user_ID=zuteilung.user_ID)) group by alle.user_ID order by zuname |
ähem du solltest erstens mal korrekt referenzieren, denn je nach DBRMS kann ich dir jetzt nicht ad hoc sagen, was er in welchem (sub)select verwendet - und zweitens erfordert - imho - IN einen Vergleichswert sonst bist immer auf falsch
pong |
Ach was habt ihr es schwer mit uns Laien! Musste erst mal nachschlagen, was man unter DBRM versteht und was referenzieren bedeuteten könnte. MYSQL, wäre das eine korrekte Referenz?
Bzgl "einen Vergleichswert", Betonung auf "einen" oder auf "Vergleichswert"? |
Zitat:
Zitat:
und vielleicht gleich vorweg, da du dich ja selbst als Laie bekannt hast, gewöhn dir nicht an Queries in einer Wurst runterzutippen, du findest dich spätestens wenns eine Seite überschreiten nie mehr zurecht und schon gar nicht jemand der dies dann nachvollziehen soll Formatvorschlag Code:
select abc, pong |
Eine DB-Query > 1 Seite O_o
Und ich dachte die von phpBB wären lang :D |
An und für sich werden 3 Tabellen angesprochen:
alle,fagrpuser, zuteilung wobei sie die 'alle_ID' innehaben. In der ersten Abfrage suche ich alle Teilnehmer, die der Fachgruppe 13 angehören, in der zweiten alle, die einer Klasse > 4 zugeteilt sind (das jahr ist jetzt nicht so wichtig). Dachte/hoffte/wünschte, das Ergebnis sei die Schnittmenge. Wenn ich statt IN ein AND setze, funktioniert's. ps: warum dann IN? Bei der Abfrage handelt es sich um eine von viele Möglichkeiten, die der User über radios und checkboxen zusammenklickt. Der Query ist also kein fixer string, sondern wird durch die Auswahl generiert. Dabei gibt es 7 Möglichkeiten einer Abfrage (Prinzipiell wäre dann auch eine Abfrage möglich die 1 Seite lang wird;)). Jetzt bin ich auf der Suche nach Verfeinerung oder etwas dazu lernen. |
Alle Zeitangaben in WEZ +2. Es ist jetzt 17:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag