tobias-digital Geschrieben 22. Juni 2004 Teilen Geschrieben 22. Juni 2004 Hiho! Ich hoffe ihr könnt mir helfen! Ich habe 2 Tabellen mit exakt den gleichen Attributen. Tabelle1 (name, vorname, strasse, hausnr, plz, ort) Tabelle2 (name, vorname, strasse, hausnr, plz, ort) Tabelle1 enthält alle Kunden, die Produkt 1 gekauft haben. Tabelle2 enthält alle Kunden, die Produkt 2 gekauft haben. Ein Kunde kann in beiden Tabellen vorkommen (er hat dann beide Produkte gekauft). Ich möchte die Tabellen beiden so vergleichen, dass ich alle Kunden bekomme, die nur in Produkt 1 gekauft haben. Wie geht das? Mein Lösungsansatz: SELECT DISTINCT `Tabelle1`.`name`, `Tabelle1`.`vorname`, `Tabelle1`.`strasse`, `Tabelle1`.`hausnr`, `Tabelle1`.`plz`, `Tabelle1`.`ort` FROM Tabelle1, Tabelle2 WHERE ((`Tabelle2`.`name` != `Tabelle1`.`name`) AND (`Tabelle2`.`vorname` != `Tabelle1`.`vorname`) AND (`Tabelle2`.`strasse` != `Tabelle1`.`strasse`) AND (`Tabelle2`.`hausnr` != `Tabelle1`.`hausnr`)AND (`Tabelle2`.`plz` != `Tabelle1`.`plz`)AND (`Tabelle2`.`ort` != `Tabelle1`.`ort`)); Danke im Vorraus, Gruß Tobias Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jusky Geschrieben 23. Juni 2004 Teilen Geschrieben 23. Juni 2004 Besser wäre hier natürlich eine Kunden-Nr zur eindeutigen Identifikation gewesen... So musst du es doch umständlich machen. Oder enthalten die Tabellen IDs für den Kunden? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tobias-digital Geschrieben 23. Juni 2004 Autor Teilen Geschrieben 23. Juni 2004 Hi! Leider "mißbrauche" ich MySQL dazu nur. Es handelt sich hierbei um eine einmalige Datenerhebung. Ich habe das Problem jetzt auch gelöst. Die beiden Tabellen habe ich CSV-mäßig exportiert und in Access Tabellen importiert. Dann habe ich die Tabellen mit dem "Assistenten für Inkonsistenzsuche" Abgefragt und dass Gewünschte erreicht. Nur interessehalber: wie würde es gehen wenn beide Tabellen eindeutige ID-Spalten hätten? Gruß Tobias Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jusky Geschrieben 23. Juni 2004 Teilen Geschrieben 23. Juni 2004 Ach so... Nun mit eindeutigen IDs würde das Ganze in etwa so aussehen: SELECT Tabelle1.Kundennummer FROM Tabelle1, Tabelle2 WHERE Tabelle1.Kundennummer != Tabelle2.Kundennummer; Also viel kürzer... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tobias-digital Geschrieben 23. Juni 2004 Autor Teilen Geschrieben 23. Juni 2004 Klar! Verstehe, aber du hast recht, ich habe keine eindeutige Kundennummer im Ausgangsmaterial. Ich hätte diese also in den beiden Tabellen vergeben müssen, was glaube ich recht kompliziert geworden wäre... Naja, ich habs jedenfalls jetzt und bin froh, dass die Sache gegessen ist... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 23. Juni 2004 Teilen Geschrieben 23. Juni 2004 Tabelle1 (name, vorname, strasse, hausnr, plz, ort) Tabelle2 (name, vorname, strasse, hausnr, plz, ort) Tabelle1 enthält alle Kunden, die Produkt 1 gekauft haben. Tabelle2 enthält alle Kunden, die Produkt 2 gekauft haben. Also das is ja mehr als kompliziert ausserdem redundant etc. Ich würde dir folgendes vorschlagen: Tabelle kunden (id, name, vorname, strasse, hausnr, plz, ort) Tabelle produkte (id, bezeichnung, preis) Tabelle posten (id, kundenid, produktid) Also eine Tabelle für Kunden, eine für Artikel und eine für einen Kauf eines Produkts. Alle Kunden, die nur Produkt 1 (id = 1) gekauft haben: SELECT DISTINCT t1.id, t1.name, t1.vorname FROM kunden t1 JOIN posten t2 ON t1.id = t2.kundenid AND t2.kundenid NOT IN (SELECT DISTINCT kundenid FROM posten WHERE produktid <> 1) Müsste so eigentlich gehen, allerdings brauchst du dazu (Sub-Selects) MySQL ab Version 4.1.0 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tobias-digital Geschrieben 23. Juni 2004 Autor Teilen Geschrieben 23. Juni 2004 Ich weiß schon, dass es redundant ist. Aber es war nicht anders möglich: Ich habe von einem Kunden zwei Excel-Tabellen bekommen. Eine mit allen Kunden die Produkt A gekauft haben und eine mit allen Kunden die Produkt B gekauft haben. Die beiden Dateien enthalten redundante Datensätze und Kundennummern (oder einen anderen Primärschlüssel) gibt es nicht. Aufgabe Finde alle Kunden die ausschließlich Produkt A gekauft haben. Man hätte das Ganze auch direkt aus dem "Sanduhren-Anzeige-Programm" (SAP) vom Kunden auslesen können, aber dafür hätte man nen Programmierer, der SAP spricht, beauftragen müssen, was teurer gewesen wäre. @JesterDay: Wie hättest Du das Problem gelöst? Gruß Tobias Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 23. Juni 2004 Teilen Geschrieben 23. Juni 2004 @JesterDay: Wie hättest Du das Problem gelöst? Gute Frage. Du solltest das ganze aber nicht als pers. Angriff o.ä. sehen (so kommt mir das vor (s. Zitat)). Ich kannte die Ausgangslage ja nicht sondern nur die Umstände, die du beschrieben hast. Ich habe dazu nur eine Lösung angeboten. Ausgehend von dem Gedanken das du die Datenstrukturen selber in der Hand hast und nicht von 2 Exceltabellen die Daten bekommst... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tobias-digital Geschrieben 23. Juni 2004 Autor Teilen Geschrieben 23. Juni 2004 @JesterDay: Keine Angst, ich hab das nicht persönlich genommen. Sorry wenn das so angekommen ist. Mich interessiert wirklich wie die doch recht ****ende Aufgabe von anderen in Angriff genommen würde :-) Gruß Tobias Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 24. Juni 2004 Teilen Geschrieben 24. Juni 2004 Mich interessiert wirklich wie die doch recht ****ende Aufgabe von anderen in Angriff genommen würde :-) Also ich gehe jetzt mal davon aus, dass die Excel-Tabellen gleich und einigermassen passend aufgebaut sind. KundenNr | KundenName | KundenAdr Da ich mir jetzt nicht 100% sicher bin, ob nicht ein Import von csv-Dateien in MySQL funktioniert würd ich sagen diese Tabellen in Access importieren. Damit hast du die Tabellen Prod1 und Prod2, jeweil mit den o.g. Feldern. Die könntest du mit entspr. Tools nach MySQL übertragen (ODBC-Access, ODBC-MySQL und Borland DataPump, haben wir letztens grad gemacht ). In MySQL erstellst du eine neue Tabelle "Kunden" und füllst diese mit Daten: INSERT INTO Kunden SELECT DISTINCT Nr, Name, Adr FROM Prod1 INSERT INTO Kunden SELECT DISTINCT Nr, Name, Adr FROM Prod2 where Nr NOT IN (SELECT Nr FROM Kunden) Damit hast du eine Kundentabelle mit KundenNr als eindeutigem Schlüssel. Dann erstellst du eine Tabelle "Produkte" und füllst die von Hand mit Id = 1, Produkt = 'Produkt1' Id=2, Produkt = 'Produkt2' Ausserdem erstellst du eine dritte Tabelle "Posten" mit einer ID (AutoIncrement), KundenNr und ProduktID und füllst die: INSERT INTO Posten SELECT DISTINCT NULL, Nr, 1 FROM Prod1 INSERT INTO Posten SELECT DISTINCT NULL, Nr, 2 From Prod2 (Null ist für die AutoInc ID, die wird damit automatisch hochgezählt). Damit solltest du den von mir oben genannten Aufbau haben Wenn es allerdings einfach nur um ein einmaliges Ding geht, die Namen der Kunden zu erhalten, die nicht Prod1 gekauft haben ist deine Lösung wahrscheinlich die kürzere Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.