Mysql MINUS

Diskutiere mit über: Mysql MINUS im Datenbanksysteme für das Web Forum

  1. ctopfel2

    ctopfel2 Thread Starter MacUser Mitglied

    Beiträge:
    206
    Zustimmungen:
    6
    Registriert seit:
    29.07.2004
    Hallo, ich habe ein dringendes Problem

    Ich verwende MAMP, wo mysql 4.02 installiert ist.

    Nun habe ich das folgende Problem: Ich möchte die Differenz von zwei Tabellen haben. In SQL gibt e dafür das MINUS Statement, welches aber in mysql nicht funktioniert.

    da ich ich noch nicht mysql 4.1 habe, funktioniert das workaround mit dem WHERE NOT EXISTS auch nicht (mysql unterstützt erst ab Version 4.1 subqueries).

    hat jemand eine idee, wie ich das machen kann?

    gruss ctopfel
     
  2. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.034
    Zustimmungen:
    1.314
    Registriert seit:
    13.09.2004
    Ich kenn mich in den Untiefen des mysql-Dialektes nicht gut aus ( halte mich eben auch meist an Standard-SQL), denke aber das eine temporäre Tabelle zum Ziel helfen könnte. In die Tabelle müßte dann jeweils ein Primärindex aus den beiden Tabellen eingetragen werden, den Du dann vergleichst.
     
  3. rash65

    rash65 unregistriert

    Beiträge:
    111
    Zustimmungen:
    0
    Registriert seit:
    27.10.2004
    Oder Du suchst einfach die Schlüssel die in Tabelle 1 aber nicht in Tabelle 2 vorkommen:

    SELECT *
    FROM Table1
    WHERE Table1.Key NOT IN (SELECT Table2.Key FROM Table2);


    Hab gerade keine DB zum testen da, und das schon länger nicht mehr gemacht, aber das müsste so schon gehen.
     
    Zuletzt bearbeitet: 21.02.2005
  4. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.034
    Zustimmungen:
    1.314
    Registriert seit:
    13.09.2004
    Genau diese Sub-SELECTs kann mysql 4.0 glaube ich noch nicht!
     
  5. rash65

    rash65 unregistriert

    Beiträge:
    111
    Zustimmungen:
    0
    Registriert seit:
    27.10.2004
    aber

    SELECT table1.*
    FROM Table1, Table2
    WHERE Table1.Key <> Table2.key;

    sollte dann wenigstens funktionieren, oder?
     
  6. Nogger

    Nogger MacUser Mitglied

    Beiträge:
    367
    Zustimmungen:
    0
    Registriert seit:
    03.08.2004
    Damit erezugst du das Carthesische Produkt und ziehst bischen was ab. Ist zuviel.

    Müßte wohl eher sein:

    Select table1.*
    from table1 left join table2 on table1.id=table2.id
    where table2.id is null
     
  7. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.034
    Zustimmungen:
    1.314
    Registriert seit:
    13.09.2004
    dann setz ich noch einen drauf und behaupte die letzte Zeile müßte lauten:

    where table2.id is not null
     
  8. rash65

    rash65 unregistriert

    Beiträge:
    111
    Zustimmungen:
    0
    Registriert seit:
    27.10.2004
    Ich glaub Nogger hat Recht. Wenn du die Felder aus der zweiten Tabelle nimmst, die nicht NULL sind hast du die Schnittmenge anstelle der Differenz.
     
  9. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.034
    Zustimmungen:
    1.314
    Registriert seit:
    13.09.2004
    @rash65:
    ähem, ja recht habt ihr! ;)
     
  10. schaary

    schaary MacUser Mitglied

    Beiträge:
    227
    Zustimmungen:
    0
    Registriert seit:
    24.09.2004
    Möglich wären auch left outer joins :)

    gute nacht!
     
Die Seite wird geladen...
Ähnliche Themen - Mysql MINUS Forum Datum
Mysql - Duplicates abfangen, mit php oder mit unique keys? Datenbanksysteme für das Web 08.03.2016
mysql abfrage optimieren Datenbanksysteme für das Web 26.03.2014
php - mysql_error != mysqli_error - mysql meldet Fehler, mysqli nicht Datenbanksysteme für das Web 05.07.2013
Fragen & Hilfe zu Projekt mit php & mySQL Integration Datenbanksysteme für das Web 01.07.2013
Fragen zu MySql Datenbanksysteme für das Web 04.03.2013

Diese Seite empfehlen

Benutzerdefinierte Suche