l0c4lh0st
Goto Top

MySQL JOINS nach vergleich von Werten

Hallo Forum,

ich habe ein kleines Problem in meiner MySQL Abfrage und hoffe ihr könnt mir ein bisschen helfen.

Content-Key: 135153

Url: https://administrator.de/contentid/135153

Printed on: April 19, 2024 at 10:04 o'clock

Member: Biber
Biber Feb 04, 2010 at 11:46:02 (UTC)
Goto Top
Moin L0c4lh0sT,

zwei mögliche Lösungsansätze
  • entweder du baust dir die Statements wirklich vollkommen dynamisch aus den jeweiligen Stringfetzen zusammen mit PHP oder whatever. Aber dann brauchst du ZWEI Abfragen, nämlich erstmal eine zur Prüfung auf Fall "'glpi_infocoms.FK_device' = 'glpi_softwarelicenses.ID'". Je nach Ergebnis dann Statement A oder B generieren mit EINEM Inner Join.

  • oder aber du machst es mit SQL-Mitteln. Dann aber IMMER zwei LEFT JOINs, also beide möglichen Fälle, vom 'glpi_infocoms.FK_device' auf 'glpi_softwarelicenses.ID' bzw.sID. Dazu musst du die tabelle zweimal mit jeweils unterschiedlichen Aliasen (z.B. noch ein "A" und ein "B" dazu) ansprechen Da immer einer der beiden auf einen NULL-Satz zeigt, kannst du mit einer "WHERE glpi_softwarelicensesA.ID is not NULL and glpi_softwarelicensesB.sID is not NULL" den gewünschten ResultSet holen.

Grüße
Biber
Member: it-frosch
it-frosch Feb 04, 2010 at 11:49:05 (UTC)
Goto Top
Hallo L0c4lh0s,

was willst du den eigentlich auswerten?
Aus deiner Beschreibung geht das leider nicht hervor. Ich habe momentan nur so viel verstanden
dass Datensätze aus der Tabelle glpi_infocoms mit FK_Device sowohl auf die ID wie auch auf die sID
der Tabelle glpi_softwarelicenses referenzieren.
Member: L0c4lh0sT
L0c4lh0sT Feb 04, 2010 at 12:30:45 (UTC)
Goto Top
Also das ganze soll eine Lizenzverwaltung werden.

Die daten werden mit OCSNG in die Datenbank geholt. OCSNG kann aber bei Software wie Visio z.B. nicht als Version 2003 oder XP oder soetwas ausgeben sondern nur Zahlen also z.B. 12.0456.0231 oder so (werden direkt aus der Registry geholt). Da wir der Version eine Lizenz zuordnen wollen, eine verbindung zwischen Version und Lizenz allerdings nicht besteht, müssen wir dieses Problem umgehen. Also haben wir uns gedacht benennen wir die Lizenz gleich der Version. Wenn ich jetzt aber meine normale Abfrage starte, benutzt er für jede Version alle Lizenzen. Da wir 2 VISIO versionen benutzen (2003, XP) haben wir jetzt 4 einträge von VISIO dabei. Einfach zu sagen dass er nur die Anzeigen soll wo Version und Lizenz gleich sind geht nicht, da wir noch andere Software haben wo Version != Lizenz ist

Ich weiß nicht ob das einigermaßen verständlich umschrieben ist hoffe es aber stark^^
Member: it-frosch
it-frosch Feb 04, 2010 at 12:56:09 (UTC)
Goto Top
Hallo L0c4lh0s,

was entspricht jetzt der Version ? ID, sID oder FK_Device?
Nimm doch bitte mal dein Visio Beispiel und ein Binspiel einer Software bei der Version != Lizenz gilt
und schreibe bitte mal die Tabelleninhalte für diese beiden Fälle mit genauer Bezeichnung was Version, Lizenz und Gerät ist.
Member: L0c4lh0sT
L0c4lh0sT Feb 04, 2010 at 13:03:55 (UTC)
Goto Top
Kann ich gerade nicht machen hab noch was anderes zu tun. Aber mach ich nachher.
Member: L0c4lh0sT
L0c4lh0sT Feb 12, 2010, updated at Oct 18, 2012 at 16:41:07 (UTC)
Goto Top
Sorry ich bin nicht mehr dazu gekommen das ganze als Tabelle zusammen zu fassen.
Hab mal meine "Probleme" in einem Thread zusammengefasst und ein wenig ausführlicher beschrieben was denn überhaupt der fall ist und warum diese Probleme auftreten....vll. ist es besser diesen Thread zu schliessen und in dem anderen weiterzumachen...

Thread kann gelöscht werden