timestamp
Mitglied Käsekuchen
Hallo Forum,
Ich kopiere zur Zeit eine alte Datenbank in eine neue (die neue Datenbank hat eine andere Struktur).
Ich habe nun zwei Tabellen A und B:
Jeweils 3 Felder aus b wurden in die Felder a1-3 kopiert.
Also b1,b2,b3 in a1,a2,a3, b4,b5,b6 in a1,a2,a3 usw.
Hierbei: Bei b1-b3 ist immer mindestens b1 nicht NULL, b4-b15 kann komplett NULL sein (die wurden auch nicht kopiert).
Um jetzt die alte Beziehung herstellen zu können, brauche ich die zugehörige ID aus B.
Ich suche also (zunächst) alle b1, b2, b3 die mit a1, a2, a3 übereinstimmen. (später dann entsprechend b4-b6, b7-b9...)
Mir werden aber viel zu wenig Datensätze angezeigt und ich weiß nicht warum.
Ich erhalte nur knapp 150, statt der über 800 vorhandenen.
Ich hoffe ich konnte das Problem deutlich genug beschreiben.
Hier mein Query:
Die Felder sind übrigens alle vom Typ VarChar
edit:
Um es vielleicht noch ein wenig zu verdeutlichen:
Tabelle b hat 15 Felder, die aus 5 Dreiergruppen bestehen.
Diese habe ich in Tabelle a aufgelöst, so dass ein Datensatz in a eine 3er Gruppe in b repräsentiert.
Eine Dreiergruppe ist nicht leer, wenn das jeweils 1. Element nicht NULL ist.
Ein kompletter Datensatz in B kann z.b. so aussehen (3er Gruppen sind kenntlich gemacht):
In a steht dann:
Ich kopiere zur Zeit eine alte Datenbank in eine neue (die neue Datenbank hat eine andere Struktur).
Ich habe nun zwei Tabellen A und B:
Code:
--A
id, a1, a2, a3
--B
id, b1, b2, b3, ... b15
Also b1,b2,b3 in a1,a2,a3, b4,b5,b6 in a1,a2,a3 usw.
Hierbei: Bei b1-b3 ist immer mindestens b1 nicht NULL, b4-b15 kann komplett NULL sein (die wurden auch nicht kopiert).
Um jetzt die alte Beziehung herstellen zu können, brauche ich die zugehörige ID aus B.
Ich suche also (zunächst) alle b1, b2, b3 die mit a1, a2, a3 übereinstimmen. (später dann entsprechend b4-b6, b7-b9...)
Mir werden aber viel zu wenig Datensätze angezeigt und ich weiß nicht warum.
Ich erhalte nur knapp 150, statt der über 800 vorhandenen.
Ich hoffe ich konnte das Problem deutlich genug beschreiben.
Hier mein Query:
SQL:
SELECT * FROM a, b
WHERE(
(
a.a1 = b.b1
AND
a.a2 = b.b2
AND
a.a3 = b.b3
)
OR
(
a.a1 = b.b1
AND
a.a2 IS NULL AND b.b2 IS NULL
AND
a.a3 = b.b.3
)
OR
(
a.a1 = b.b.1
AND
a.a2 = b.b2
AND
a.a3 IS NULL AND b.b3 IS NULL
)
OR
(
a.a1 = b.b1
AND
a.a2 IS NULL AND b.b2 IS NULL
AND
a.a3 IS NULL AND b.b.3 IS NULL
)
)
Die Felder sind übrigens alle vom Typ VarChar
edit:
Um es vielleicht noch ein wenig zu verdeutlichen:
Tabelle b hat 15 Felder, die aus 5 Dreiergruppen bestehen.
Diese habe ich in Tabelle a aufgelöst, so dass ein Datensatz in a eine 3er Gruppe in b repräsentiert.
Eine Dreiergruppe ist nicht leer, wenn das jeweils 1. Element nicht NULL ist.
Ein kompletter Datensatz in B kann z.b. so aussehen (3er Gruppen sind kenntlich gemacht):
Code:
aaa,bbb,ccc|ddd, NULL, fff|ggg, NULL, NULL|jjj, kkk, lll| NULL, NULL, NULL
Code:
aaa,bbb,ccc
ddd,NULL,fff
ggg, NULL, NULL
jjj, kkk, lll
Zuletzt bearbeitet: