Archiv verlassen und diese Seite im Standarddesign anzeigen : SQL SELECT Abfrage
Ich bräuchte mal ein SELECT Abfrage für folgende Bedingungen:
- Insgesamt 2 Tabellen
- 1. Tabelle: die Zahlen 1 bis 350 im Feld "id" (also 350 Einträge)
- 2. Tabelle: 100 Zufällige Zahlen (100 Einträge) in der Zahlenspanne von 1 bis 500 im Feld "romid"
Jetzt will ich mit nem SELECT Query abfragen welche id´s aus tabelle 1 in der tabelle 2 im Feld romid´s NICHT enthalten sind ;)
Danke
was fuer ein sql hast du denn? mysql? oracle?
SELECT rowid FROM tabelle2 where rowid > ´350´;
das würde für deine zwecke voll reichen ... wenn die aufgabenstellung sich nicht verändert .... ;-)
ach ja... das rdbms sollte wurscht sein .. also .. ob´s oracle ist oder mysql ...
ansi/92 standart sag ich da nur *G*
und... ich hab mich oben vertippt.... sollte romid heissen und ned rowid
*grunz*
@bauchi
dein Ergebnis entspricht nicht der Aufgabenstellung. (es sind ja nur 100 Einträge in der tabelle2 die aus Zahlen von random(500) bestehen).
Wenn in der tabelle2 z.b. keine Zahl 1 und 2 drinne ist ... müßte mir das ja angezeigt werden ;)
Hier ein kleines Beispiel ( alle Werte sind um ein 10faches kleiner ;) )
http://www.8ung.at/meistar/beisp.gif
ich peil die aufgabenstellung ned ganz.
also im ersten postings willst du alle zahlen, die in tabelle1 vorkommen aber in tabelle2 ned, richtig?
das wären dann bestimmt nur zahlen <= 350 (weil in tabelle1 ja keine zahl > 350 ist).
beim letzten posting hast du aber alle zahlen, die <= 500 und die nicht in tabelle2 vorkommen (tabelle1 hat da gar keinen einfluss)
welche variante willst du nun?
ok, mir wurde in newsgroups geholfen ;)
die antwort ist:
SELECT tab1.id FROM tab1 LEFT JOIN tab2 ON tab1.id = tab2.romid WHERE tab2.romid IS NULL
haett ich dir auch sagen koennen, wenn ich meine unterlagen da gehabt haette... sorry, hatte keine zeit fuer... :(
greetz
hi!
...LEFT JOIN tab2 ON tab1.id = tab2.romid WHERE tab2.romid IS NULL hi!
wo ich gerade das mit dem "ON" hier lese:
kann ich hinter ein ON noch ein zweites ON mit bspw. OR hinterhängen?
fange gerade erst richtig mit sql an und bin für jedse hilfe dankbar.
gruß,
SoulCut
@SoulCut: Hinter ON wird (fast) die gleiche Syntax wie nach WHERE verwendet, d.h. die kannst auch mehrere Bedingungen über AND verknüpfen (OR sollte auch gehen, macht aber eigentlich nicht soviel Sinn)
@Meistar: Was auch geht und auch performanter ist:
SELECT id
FROM tab1
WHERE id IS NOT IN ( SELECT romid FROM tab2 ).
Ciao Artech
@ Artech
Deine SQL Anfrage geht nich
You have an error in your SQL syntax near ´IN ( SELECT romid FROM tab2 )
Übrigens hatte ich noch nie eine SQL Abfrage mit 2 Select Anweisungen zum laufen gebracht. So wie du hatte ich es erst auch probiert :D
Original von Meistar
@ Artech
Deine SQL Anfrage geht nich
You have an error in your SQL syntax near ´IN ( SELECT romid FROM tab2 )
Übrigens hatte ich noch nie eine SQL Abfrage mit 2 Select Anweisungen zum laufen gebracht. So wie du hatte ich es erst auch probiert :D
dochdoch, das geht schon.
vergleiche dazu auch http://www.coding-board.de/board/thread.php?threadid=156&boardid=11
ich glaub der fehler liegt beim IS NOT, das sollt doch nur NOT heissen.
das IN (select...) geht bestimmt
Sorry, ich glaube ohne das IS sollte es gehen (habs vorher nicht getestet 8)
Ciao Artech
mhhh
@meistar... kann es sein das du mysql verwendest (so wie oben von dir beschrieben??)
mysql kann afaik keine Sub-Selects...
und wirft dir nen fehler raus, wenn es sowas sieht ...
@ bauchi
daran wirds wahrscheinlich liegen. Ich hab, glaub ich, alle Kombinationen durchprobiert ;).
mhhh schon mal postgresql benutzt ??
ist auch freeware, wird super von php unterstüzt (falls das für dich wichtig ist ;-) ... )
kann subselects, trigger, stored procedures, transactions ...
ist ganz nett ;-)
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.