SQL Abfrage

Post Reply
Message
Author
Carlo567

SQL Abfrage

#1 Post by Carlo567 »

Hallo,

habe zwei Tabellen A und B die über einen id miteinander verknüpft sind.

Code: Select all

tabA
id nutzlast...

tabB
id id_a nutzlast...
Ich suche eine SQL-Abfrage das mir als Ergebnis all die Zeilen aus A liefert, die NICHT mit einer Zeile in B vernüpft sind.


Zuhause hab ich mysql 5.x, auf dem Webspace 4.x. Mit 5.x geht eine Abfrage in der Art die das gewünschte Ergebnis liefert:

Code: Select all

SELECT * FROM tab1 WHERE ... AND id NOT IN (SELECT id_a FROM tab2 WHERE ...)
Aber mit mysql 4 geht das leider nicht.


Kann mir bitte jemand helfen?

Alex.MH

#2 Post by Alex.MH »

Ist zwar nicht das was du wissen wolltest, aber tu dir den Aerger nicht an. Solche Problemchen ziehen sich quer duch die Benutzung von MySQL und du bist spaetestens dann verlassen, wenn du Transaktionen benoetigst und dich auf die (nicht vorhandenen) ACID Eigenschaften von MySQL verlaesst.

Versuch lieber gleich auf einer richtigen Datenbank, wie z.B. PostgreSQL zu entwickeln - du wirst dir viel Aerger ersparen.

Gruss,
Alex

Carlo567

?

#3 Post by Carlo567 »

Das geht leider nicht, weil auf dem Webspace nur mysql läuft.

Ich weiß zwar das mysql einige Einschränkungen gegenüber postgres hat, jedoch wird das für mein kleines Projekt nicht die Rolle spielen.

Die gesuchte Funktion gibt es bestimmt auch in mysql.


Kann mir bitte jemand helfen?

Gast

Re: SQL Abfrage

#4 Post by Gast »

Wie viele Datensätze hast du denn in deiner Tabelle_B?
Wenn dort mehr als nur ein paar Datensätze drin stehen dann verbietet sich ein WHERE ... IN ... bzw. ein WHERE ... NOT IN ... von alleine. Verwende aus Performancegründen nie ein IN Statement wenn in deiner IN Liste mehr als nur ein paar Werte enthalten sind.

Probier mal lieber sowas in der Art:

Code: Select all

SELECT
        a.*
FROM
        tabelle_a a,
        ( SELECT id FROM tabelle_a MINUS id_a FROM tabelle_b ) a_ohne_b
WHERE
        a.id = a_ohne_b.id_a ;


Post Reply