Portal > Foren > Datenbanken, Server, Betriebssysteme und sonstige Programmiersprachen > Datenbanken > Gib zurück, was Du nicht findest (Subqueries + Paramter)
Antwort
 
LinkBack Themen-Optionen Thema durchsuchen
Alt 30.07.2009, 14:07 Nach oben    #1
Erfahrener Benutzer
 
Registriert seit: 16.08.2008
Ort: Mecklenburg-Vorpommern
Beiträge: 314
Standard Gib zurück, was Du nicht findest (Subqueries + Paramter)

Hallo Gemeinde,

leider habe ich hierzu nichts bei MySQL und auch nichts brauchbares gefunden.

Gehen wir von folgender Tabelle aus:

Code:
ID | Nummer
1  | 5
2  | 6
3  | 7
4  | 8
Jetzt die Abfrage:

Code:
SELECT `ID` FROM `table` WHERE Nummer=5 OR Nummer=6 OR Nummer=10
Das Problem:
Nummer=10 gibt es nicht.
Ich möchte, dass der Ganze Query in diesem Fall abbricht und mir "10" zurückgibt, weil "10" auf nichts gepasst hat.

Der Bestfall:
Code:
SELECT `something` FROM `any` WHERE ID IN 
		(SELECT `ID` FROM `LookUp` WHERE Nummer-ID IN
				(SELECT `ID` FROM `table` WHERE Nummer=5 OR Nummer=6 OR Nummer=10)
		)
)';
Der Bestfall wäre, wenn der Ganze Query (also nicht nur der Subquery) abbricht, und stattdessen in einer anderen Tabelle einen Wert=10 hinzufügt.

Im Augenblick wäre das Ganze nur via PHP zu lösen, indem ich die Ergebnisse aus dem betroffenen Query auszähle und dann überprüfe, welcher Wert nicht vorkommt.
Wenn jedoch alle Werte vorkommen, hätte ich mir diesen Schritt und die Unterbrechung sparen können.

Wie immer freu ich mich über Tipps und/oder Referenzen zur Problemlösung :)

Danke!

Geändert von Sekundentakt (30.07.2009 um 14:59 Uhr)
Sekundentakt ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 30.07.2009, 14:51 Nach oben    #2
Lutz Mahlstedt
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 827
Standard

Ich glaube noch nicht, dass das direkt mit SQL möglich ist, zumal deine Formulierung auch etwas merkwürdig ist: Wie soll MySQL den Datensatz mit der Nummer 10 zurückgeben, wenn dieser nicht existiert?!
Ich denke du wirst nicht drumherum kommen in irgendeiner Art und Weise programmiertechnisch prüfen zu müssen, ob eine Nummer nicht vorhanden ist...
MrNiceGuy ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 30.07.2009, 14:58 Nach oben    #3
Erfahrener Benutzer
 
Registriert seit: 16.08.2008
Ort: Mecklenburg-Vorpommern
Beiträge: 314
Standard

Zitat:
Wie soll MySQL den Datensatz mit der Nummer 10 zurückgeben, wenn dieser nicht existiert?!
Das ist ein Missverständnis. MySQL soll nicht den Datensatz zurückgeben, der auf 10 passt. MySQL soll mir den Parameter 10 zurückliefern, weil er auf NICHTS gepasst hat.

Ich hab die verwirrende Aussage einmal editiert.
Sekundentakt ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

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 aus



Alle Zeitangaben in WEZ +1. Es ist jetzt 06:48 Uhr.


Powered by vBulletin® Version 3.8.4 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.3.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47