PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SQL SELECT Abfrage


Meistar
26.12.2001, 16:14
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


pate33
26.12.2001, 16:23
was fuer ein sql hast du denn? mysql? oracle?

Meistar
26.12.2001, 16:29
mysql

Bauchi
26.12.2001, 16:32
SELECT rowid FROM tabelle2 where rowid > ´350´;

das würde für deine zwecke voll reichen ... wenn die aufgabenstellung sich nicht verändert .... ;-)

Bauchi
26.12.2001, 16:43
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*

Meistar
26.12.2001, 19:32
@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

sami
27.12.2001, 11:47
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?

Meistar
27.12.2001, 21:36
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

pate33
28.12.2001, 00:16
haett ich dir auch sagen koennen, wenn ich meine unterlagen da gehabt haette... sorry, hatte keine zeit fuer... :(

greetz

SoulCut
10.01.2002, 11:46
hi!

...LEFT JOIN tab2 ON tab1.id = tab2.romid WHERE tab2.romid IS NULL hi!

wo ich gerade das mit dem &quot;ON&quot; 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

Artech
11.01.2002, 23:20
@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

Meistar
12.01.2002, 21:37
@ Artech

Deine SQL Anfrage geht nich

You have an error in your SQL syntax near &acute;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

sami
15.01.2002, 17:23
Original von Meistar
@ Artech

Deine SQL Anfrage geht nich

You have an error in your SQL syntax near &acute;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

Artech
16.01.2002, 13:27
Sorry, ich glaube ohne das IS sollte es gehen (habs vorher nicht getestet 8)

Ciao Artech

Bauchi
17.01.2002, 02:09
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 ...

Meistar
17.01.2002, 20:53
@ bauchi

daran wirds wahrscheinlich liegen. Ich hab, glaub ich, alle Kombinationen durchprobiert ;).

Bauchi
17.01.2002, 20:57
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 ;-)