(Mysql) vergleich zweier Tabellen, welche sind "neu"?
Knud
- datenbank
Hallo!
Nachdem mir das Wochenende wiedermal nicht weitergeholfen hat,
hoffe ich, dass ich erneut die Unterstützung bei Euch finde.
Ich möchte ein Statement formulieren, dass mir alle die Sätze ausgibt, die
nur in der einen Tabelle vorhanden aber nicht in der anderen.
Normalerweise bekomme ich eine Tabelle mit aktualisierten Beständen.
Dabei sollte die Anzahl der Sätze konstant sein. Wie auch immer, plötzlich
sind in der Übergabedatei mehr Sätze als in der Hauptdatei zu finden.
Bei beinahe 5000 Sätzen fällt es mir leider sehr schwer, die Sätze, die
zuviel sind manuell herauszufinden.
Nur wie beschreibt man ein leere Schnittmenge in Mysql?
Wäre toll, wenn einer von Euch ne Lösung hätte!
Gruß,
Knud
Hi,
Ich möchte ein Statement formulieren, dass mir alle die Sätze ausgibt, die
nur in der einen Tabelle vorhanden aber nicht in der anderen.
keine Ahnung, ob MySQL das kann - aber sinngemäß sollte es so lauten:
SELECT * FROM tabelle1
MINUS
SELECT * FROM tabelle2
Möglicherweise mußt Du das "*" auf eine Spalte (Primary Key) reduzieren.
Cheatah
Hi,
keine Ahnung, ob MySQL das kann - aber sinngemäß sollte es so lauten:
SELECT * FROM tabelle1
MINUS
SELECT * FROM tabelle2
Möglicherweise mußt Du das "*" auf eine Spalte (Primary Key) reduzieren.
geht leider nicht. (wäre ja auch zu schön gewesen).
Auch, wenn ich's nur auf den primary key reduziere.
Ok, mit nem kleinen Script geht's auch recht schnell. Da bleibt mir wohl nichts anderes.
Gruß,
Knud
Hallo !
Ich befürchte, Cheatahs Vorschlag läßt sich mit MySQL nicht umsetzen.
Vielleicht hilft dir aber ein Blick auf diesen Thread im Forums-Archiv: http://www.teamone.de/selfhtml/sfarchiv/2000_3/t19363.htm.
Dort wurde ein ähnliches Problem behandelt.
Gruß,
kerki
Hi,
Ich befürchte, Cheatahs Vorschlag läßt sich mit MySQL nicht umsetzen.
*seufz* manchmal frage ich mich wirklich, wozu MySQL überhaupt gut ist... vom reinen Auslesen bestimmter Daten, die man kennt, mal abgesehen :-(
Angeblich soll MySQL 4 Subselects beherrschen (werden). Kann das jemand bestätigen?
Cheatah
Hallo !
*seufz* manchmal frage ich mich wirklich, wozu MySQL überhaupt gut ist... vom reinen Auslesen bestimmter Daten, die man kennt, mal abgesehen :-(
Alles eine Frage des eigenen Anspruchs: :-)
MySQL über MySQL:
"The main goals of MySQL are speed and robustness."
Oder noch treffender:
"Some things we don't have any plans to do: [*g*]
Transactions with rollback (we mainly do selects, and because we don't do transactions we can be much quicker on everything else)."
Insofern ist "reines Auslesen bestimmter Daten, die man kennt" und dies so schnell und zuverlässig wie möglich, also erstes Ziel von MySQL.
Und hierzu ist MySQL m.E. _mehr_ als gut und dabei so unverschämt preisgünstig. :-)
Angeblich soll MySQL 4 Subselects beherrschen (werden). Kann das jemand bestätigen?
Scheint zu stimmen:
http://www.mysql.com/development/todo.html
Gruß,
kerki
Hi,
Und hierzu ist MySQL m.E. _mehr_ als gut
da stimme ich Dir zu - wobei ich "robustness" mal _nicht_ auf die Funktionalität beziehe, denn dann muß ich diese Aussage revidieren ;-)
und dabei so unverschämt preisgünstig. :-)
ACK :-)
Merci!
Cheatah
Hi!
Die mysql-Lösung ist sogar in dem Manual beschrieben:
http://www.mysql.com/documentation/mysql/bychapter/manual_Reference.html#JOIN
"This example finds all rows " und so weiter
--
Henryk