Flashhilfe.de - Flash Community

MySQL Ausnahme einbauen

 


AntwortenRegistrieren Seite1  

coloneltw#1
Benutzerbild von coloneltw
Beiträge: 11
Registriert: Mar 2010

22.03.2010, 09:39

Hallo an alle und vielen Dank schonmal für eure Hilfe!
ich bastel gerade an einer SQL Abfrage herum. Es geht dabei um Lizenzen und deren Einbindung. Wir haben uns eine Software gekauft die Lizenzen und alle möglichen Dinge wie User, Endgeräte etc miteinander verknüpfen kann. Diese Software ist eine webbasierte Software mit einem MySQl Kern.
Mit MySQL kann ich dann auch Verbindungen basteln.
In meinen aktuellen Beispiel  möchte ich gern allen Endgeräten eine Officelizenz zuweisen. Das klappt auch prima. Die Hälfte unserer Endgeräte sind aber Rangees (Thinclients). Deren Officelizenz (obwohl keins drauf ist) ist für die Nutzung von office über den Terminalserver. Wir verwenden hier Office 2003 standard. Nun haben wir aber für bestimmte Leute mit einem PC als Endgerät Office 2003 Professional. Das Pro gibt dem user das Recht es sowohl auf dem PC als auch auf einem Notebook und auf dem TS zu nutzen. Sprich ich brauche keine Standard Lizenz auf Endgeräten wo ein Office 2003 pro installiert ist.
Ich kann wie gesagt beides einfügen, er verbärt dann aber die Lizenz 2mal (Standard und Pro) Ich würde jetzt ganz gern mit MySQl eine Ausnahmeregelung bauen.
Mit UNION ALL habe ich alle Nutzungen hintereinander zugefügt. Anbei der Code für Office 2003 Std und Pro


# Office 2003 Standard
SELECT concat(`import_id`,'_3581'), 'mmw_ads' as import_data_source_id, `import_id` as import_device_id,
      '3581' as import_product_id, '1' as quantity
FROM  `devices`
WHERE  `device_type_id` = '4' OR `device_type_id` = '3' OR `device_type_id` = '6'
UNION ALL

# Office 2003 Pro
SELECT concat(tmp_csv2table_hardware.col_name,'_3570') as import_id, 'mmw_ads' as import_data_source_id, tmp_csv2table_hardware.col_name as import_device_id,
      '3570' as import_product_id, '1' as quantity
  FROM    smarttrack_prod.tmp_csv2table_hardware tmp_csv2table_hardware
      INNER JOIN
          smarttrack_prod.tmp_csv2table_software tmp_csv2table_software
      ON (tmp_csv2table_hardware.col_id =
              tmp_csv2table_software.col_id)

WHERE tmp_csv2table_software.col_name = 'Microsoft Office Professional Edition 2003'

Wie man im From erkennen kann sind beide Abfragen auf verschiedene Tabellen ausgerichtet. Standard wird an alle in Smarttrack befindliche Endgeräte des Typs, PCs, NB und Rangees gelegt bei Pro auf die Temorärtabellen aus einem Softwarescanner. Der hat die tabellen Hardware und Software.

Ich benötige jetzt im prinzip eine Abfrage die das Office 2003 Std auf die endgeräte verteilt welche kein Office Pro aus dem Scanner bekommen. Dazu müsste ich dann auch die Joins so umstellen das sie nicht die 2 sondern die 3 Tabellen unterstützen.

Nicht wundern weil das nur Select ist, der gesammte SQl String wird in eine XML geschrieben, welche dann die Ausgaben in eine CSV schreibt und diese dann in Smarttrack einliest.

Mir fällt nur ein umständlicher Weg ein, diese Ausgabe in eine weitere Temp tabelle umzulegen und erneut mit Select dort abzufragen.

Ich wäre aber sehr begeistert wenn ich diesen Zwischenschritt weglassen könnte indem ich die Abhängigkeit dort hineinpacke.

Alle Tabellen liegen in einer Datenbank. Die tabelle hardware und Software sind über die col_id verknüpft, die Tabelle devices wäre über hardware.col_name und devices.import_id verbunden.

Also wie gesagt, schonmal vielen Dank für eure Hilfe.
Ach ja die Joins (davon habe ich keine Ahnung) habe ich mit Toad for mysql angelegt. Ziemlich charmantes Tool wenn man nur begrenzte SQl Kenntnisse hat aber es kann halt nicht alles
Werbung
Beiträge: 0
Registriert: Feb 2016


Sebastian#2
Benutzerbild von SebastianFlashhilfe.de Moderator
Beiträge: 6981
Wohnort: München
Registriert: Jan 2002

29.03.2010, 11:06

Ist das noch aktuell? Falls ja, könntest Du mal in "SQL" Sprache schreiben was genau der Query können müsste? Es ist schwer nach zu vollziehen was mit so etwas wie "Office 2003 Std auf die endgeräte verteilt" gemeint ist.

Evtl. habe ich es richtig verstanden. Du könntest mal so etwas in der Art versuchen:
PHP:
1
2
3
4
5
6
7
8
9
10
SELECT concat(tmp_csv2table_hardware.col_name,'_3570') as import_id, 'mmw_ads' as import_data_source_id, tmp_csv2table_hardware.col_name as import_device_id, 
      '3570' as import_product_id, '1' as quantity
  FROM    smarttrack_prod.tmp_csv2table_hardware tmp_csv2table_hardware
      INNER JOIN
          smarttrack_prod.tmp_csv2table_software tmp_csv2table_software
      ON (tmp_csv2table_hardware.col_id =
              tmp_csv2table_software.col_id)
     LEFT JOIN devices d ON(tmp_csv2table_hardware.col_name = d.import_id)
  WHERE tmp_csv2table_software.col_name = 'Microsoft Office Professional Edition 2003' OR (`d.device_type_id` = '4' OR `d.device_type_id` = '3' OR `d.device_type_id` = '6')

Das wird sicherlich nicht auf anhieb klappen, aber damit könntest Du mal etwas rum spielen.
JavaScript & JavaFX Freelancer || Flashhilfe @ Twitter || XING Profil

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2019 Sebastian Wichmann - Flashhilfe.de