![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Inventar
![]() |
![]() 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 ? |
![]() |
![]() |
![]() |
#2 |
Inventar
![]() |
![]() Ja, er würde 4 & 8 als gültig ansehen
pong
____________________________________
\"Ein Gewitter reinigt die Luft\", sagte der Mann, nachdem ein Blitz seine Frau erschlug Nicht klicken! Erstposteralarm/Beschwerde/Kummerkasten Verplattet |
![]() |
![]() |
![]() |
#3 |
Inventar
![]() |
![]() 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?
|
![]() |
![]() |
![]() |
#4 |
Inventar
![]() |
![]() zeig mal das gesamte Query, mit dem beschnittenen fangt man nicht viel an
pong
____________________________________
\"Ein Gewitter reinigt die Luft\", sagte der Mann, nachdem ein Blitz seine Frau erschlug Nicht klicken! Erstposteralarm/Beschwerde/Kummerkasten Verplattet |
![]() |
![]() |
![]() |
#5 |
Inventar
![]() |
![]() 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 |
![]() |
![]() |
![]() |
#6 |
Inventar
![]() |
![]() ä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
____________________________________
\"Ein Gewitter reinigt die Luft\", sagte der Mann, nachdem ein Blitz seine Frau erschlug Nicht klicken! Erstposteralarm/Beschwerde/Kummerkasten Verplattet |
![]() |
![]() |
![]() |
#7 |
Inventar
![]() |
![]() 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"? |
![]() |
![]() |
![]() |
#8 | ||
Inventar
![]() |
![]() 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, def, ... xyz from tabelle where abc IN (select a.abc from tabelle a); pong
____________________________________
\"Ein Gewitter reinigt die Luft\", sagte der Mann, nachdem ein Blitz seine Frau erschlug Nicht klicken! Erstposteralarm/Beschwerde/Kummerkasten Verplattet |
||
![]() |
![]() |
![]() |
#9 |
Inventar
![]() |
![]() Eine DB-Query > 1 Seite O_o
Und ich dachte die von phpBB wären lang ![]() |
![]() |
![]() |
![]() |
#10 |
Inventar
![]() |
![]() 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 ![]() |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|