Vergleich von tabellen

Alles zum SQL-Dialekt

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Vergleich von tabellen

Beitrag von Manfred »

Hi,
gegeben ist eine Tabelle (Vater) mit den Feldern
Mon, Die, Mit, Don, Fre, Sam, Son
Alles logische Felder. Es können je Satz alle oder nur ein Feld auf TRUE stehen.
Mit den Werten möchte ich in einer anderen Tabelle (Sohn) suchen, in denen Sätze stehen, die die gleichen Felder haben, aber unterschiedliche Werte.
Wenn nun in dem Vatersatz Mon, Mit, Fre ein True haben, dann soll über SELECT aus der Sohntabelle alles ermittelt werden was irgendwie ein TRUE in den Felder Mon, Mit, Fre hat. Egal in welcher Kombination. Hauptsache ein True stimmt überein.
Gibt es da vielleicht unter SQL einen einfachen Befehl, der alle Felder miteinander vergleicht und dann bei TRUE in beiden den Satz übernimmt? Oder muß man da wirklich Stück für Stück alles händisch eingeben und vergleichen?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: Vergleich von tabellen

Beitrag von Marcus Herz »

Code: Alles auswählen

select * from vater
left join kind on <bedingung>
where 
iif(vater.mon, kind.mon, false) or
iif(vater.die,  kind.die, false) or
iif(vater.mit, kind.mit, false) or
iif(vater.don,  kind.don, false) or
iif(vater.fre,   kind.fre, false) or
iif(vater.sam, kind.sam, false) or
iif(vater.son,  kind.son, false) 
Denke das könnt stimmen.
Alternativ, aber hier denk ich fehlt was:

Code: Alles auswählen

select * from vater , kind
where 
iif(vater.mon, kind.mon, false) or
iif(vater.die,  kind.die, false) or
iif(vater.mit, kind.mit, false) or
iif(vater.don,  kind.don, false) or
iif(vater.fre,   kind.fre, false) or
iif(vater.sam, kind.sam, false) or
iif(vater.son,  kind.son, false) 
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: Vergleich von tabellen

Beitrag von nightcrawler »

Code: Alles auswählen

SELECT * FROM vater v
INNER JOIN kind k ON v.ID=k.VATER_ID //join Bedingung
WHERE
  (v.MO AND k.MO) OR
  (v.DI AND k.DI) OR
  ...
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Vergleich von tabellen

Beitrag von Manfred »

OK,
ich dachte es wäre was anderes möglich. Aber wenn alles angegeben werden muß, dann weiß ich wie ich das mache.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: Vergleich von tabellen

Beitrag von nightcrawler »

Du könntest es auch noch über Stored Procedures oder Functions lösen ... das wird aber wesentlich komplexer und langsamer.
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Antworten