MYSQL Abfrage mit Benachrichtigung über KACE K1000
Hallo ich bin momentan am Testen von KACE K1000(Asset Management) und KACE K2000
Im Zusammenhang damit bräuchte ich mal etwas Unterstützung in Hinsicht von SQL.
Also Folgendes:
In KACE kann man Berichte erstellen und Planen die auf eine SQL Select Anweisung aufbauen.
Vorstellung vom Kunden: Benachrichtigung eines bald auslaufenden Vertrags.
Beispieltabelle:
Ablaufdatum
Vertrag + Ablaufdatum + Benachrichtigung am
Vertrag1 | 10.10.2015 | 10.09.2015
Vertrag2 | 20.09.2020 | 17.09.2020
etc.
So ich möchte eine Select Anweisung schreiben die alle Datensätze anzeigt die wo das Datum der Benachrichtigung am Heute und in der Vergangenheit liegt. Da ich von SQL nicht viel Ahnung habe, habe ich im Internet gestöbert und habe es versucht mit diesem Beispiel:
SELECT *
FROM Ablaufdatum
WHERE Benachrichtigung am <= DATE()
Nur funktioniert das nicht. Wäre ja auch zu einfach gewesen :D
Als Fehlermeldung bekommt ich bevor ich diese Berichterstellung speichern kann diese:
mysql error: [1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'am <= DATE() LIMIT 0' at line 3] in EXECUTE(
"SELECT *
FROM Ablaufdatum
WHERE Benachrichtigung am <= DATE() LIMIT 0")
Nur werde ich daraus nicht Schlau.
Habe mal in den Beispiel Benachrichtigung rumgestöbert die KACE dort schon drin hat dort sieht ein Beispiel SELECT Anweisung so aus. Dieser Befehl soll über einen Service Vertrag der in 60 Tagen ausläuft die Rechner Anzeigen.
SELECT M.NAME AS MACHINE_NAME, M.CS_MODEL AS MODEL, DA.SERVICE_TAG, DA.SHIP_DATE, M.USER_LOGGED AS LAST_LOGGED_IN_USER,
DW.SERVICE_LEVEL_CODE, DW.SERVICE_LEVEL_DESCRIPTION, DW.SERVICE_PROVIDER,
DW.END_DATE AS EXPIRATION_DATE
FROM DELL_WARRANTY DW
JOIN DELL_ASSET DA ON (DW.SERVICE_TAG = DA.SERVICE_TAG)
JOIN MACHINE M ON (M.BIOS_SERIAL_NUMBER = DA.SERVICE_TAG OR M.BIOS_SERIAL_NUMBER = DA.PARENT_SERVICE_TAG)
WHERE M.CS_MANUFACTURER LIKE '%dell%'
AND M.BIOS_SERIAL_NUMBER!=''
AND DA.DISABLED != 1
AND DW.END_DATE > NOW()
AND DW.END_DATE <= DATE_ADD(NOW(),INTERVAL 60 DAY)
AND DW.END_DATE = (SELECT MAX(END_DATE) FROM DELL_WARRANTY DW2 WHERE DW2.SERVICE_TAG=DW.SERVICE_TAG AND DW2.SERVICE_LEVEL_CODE=DW.SERVICE_LEVEL_CODE);
Wo liegt meine Fehler in der Formatierung? Oder habe ich komplett falschen Ansatz?
Vielen Danke schon mal im voraus für schnelle Antworten und alle Tipps & Tricks
Gruß Arne
Im Zusammenhang damit bräuchte ich mal etwas Unterstützung in Hinsicht von SQL.
Also Folgendes:
In KACE kann man Berichte erstellen und Planen die auf eine SQL Select Anweisung aufbauen.
Vorstellung vom Kunden: Benachrichtigung eines bald auslaufenden Vertrags.
Beispieltabelle:
Ablaufdatum
Vertrag + Ablaufdatum + Benachrichtigung am
Vertrag1 | 10.10.2015 | 10.09.2015
Vertrag2 | 20.09.2020 | 17.09.2020
etc.
So ich möchte eine Select Anweisung schreiben die alle Datensätze anzeigt die wo das Datum der Benachrichtigung am Heute und in der Vergangenheit liegt. Da ich von SQL nicht viel Ahnung habe, habe ich im Internet gestöbert und habe es versucht mit diesem Beispiel:
SELECT *
FROM Ablaufdatum
WHERE Benachrichtigung am <= DATE()
Nur funktioniert das nicht. Wäre ja auch zu einfach gewesen :D
Als Fehlermeldung bekommt ich bevor ich diese Berichterstellung speichern kann diese:
mysql error: [1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'am <= DATE() LIMIT 0' at line 3] in EXECUTE(
"SELECT *
FROM Ablaufdatum
WHERE Benachrichtigung am <= DATE() LIMIT 0")
Nur werde ich daraus nicht Schlau.
Habe mal in den Beispiel Benachrichtigung rumgestöbert die KACE dort schon drin hat dort sieht ein Beispiel SELECT Anweisung so aus. Dieser Befehl soll über einen Service Vertrag der in 60 Tagen ausläuft die Rechner Anzeigen.
SELECT M.NAME AS MACHINE_NAME, M.CS_MODEL AS MODEL, DA.SERVICE_TAG, DA.SHIP_DATE, M.USER_LOGGED AS LAST_LOGGED_IN_USER,
DW.SERVICE_LEVEL_CODE, DW.SERVICE_LEVEL_DESCRIPTION, DW.SERVICE_PROVIDER,
DW.END_DATE AS EXPIRATION_DATE
FROM DELL_WARRANTY DW
JOIN DELL_ASSET DA ON (DW.SERVICE_TAG = DA.SERVICE_TAG)
JOIN MACHINE M ON (M.BIOS_SERIAL_NUMBER = DA.SERVICE_TAG OR M.BIOS_SERIAL_NUMBER = DA.PARENT_SERVICE_TAG)
WHERE M.CS_MANUFACTURER LIKE '%dell%'
AND M.BIOS_SERIAL_NUMBER!=''
AND DA.DISABLED != 1
AND DW.END_DATE > NOW()
AND DW.END_DATE <= DATE_ADD(NOW(),INTERVAL 60 DAY)
AND DW.END_DATE = (SELECT MAX(END_DATE) FROM DELL_WARRANTY DW2 WHERE DW2.SERVICE_TAG=DW.SERVICE_TAG AND DW2.SERVICE_LEVEL_CODE=DW.SERVICE_LEVEL_CODE);
Wo liegt meine Fehler in der Formatierung? Oder habe ich komplett falschen Ansatz?
Vielen Danke schon mal im voraus für schnelle Antworten und alle Tipps & Tricks
Gruß Arne
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 206483
Url: https://administrator.de/contentid/206483
Ausgedruckt am: 26.11.2024 um 03:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo Arne,
G Jörg
SELECT ASSET.NAME AS ASSET_NAME,
AD.FIELD_35 as 'Benachrichtigung am',
GROUP_CONCAT(DISTINCT L1.NAME) as 'Computer',
AD.FIELD_34 as 'Ablaufdatum'
FROM ASSET
LEFT JOIN USER U ON U.ID = ASSET.OWNER_ID
LEFT JOIN MACHINE M ON ASSET.MAPPED_ID = M.ID
AND ASSET.ASSET_TYPE_ID = 5
LEFT JOIN ASSET_DATA_10 AD ON AD.ID = ASSET.ASSET_DATA_ID
LEFT JOIN ASSET_ASSOCIATION J1 ON J1.ASSET_FIELD_ID = 33
AND J1.ASSET_ID = ASSET.ID
LEFT JOIN ASSET L1 ON L1.ID = J1.ASSOCIATED_ASSET_ID
WHERE ASSET.ASSET_TYPE_ID = 10
AND AD.FIELD_35 <= DATE()
GROUP BY ASSET.ID
ORDER BY ASSET_NAME
G Jörg