Rolf b: MySQL Subquery

Beitrag lesen

Das geht mit einer geschachtelten Query. Hatte ich Dir das nicht neulich bei der EK-Rechnerei sogar als Beispiel gegeben?

Zum Aufwärmen nochmal die Abfrage ohne DATEDIFF. Da kommt nur ein einziger Wert bei heraus. Damit die Subquery nicht ganz so sinnlos ist, nehme ich an, dass Du auch noch ein paar Spalten (id und ek) aus der Artikel-Tabelle mitnehmen willst. Andernfalls kannst Du auch die history-Tabelle allein abfragen.

SELECT id, ek, (SELECT date FROM history WHERE history.artikel=artikel.id LIMIT 1) as lastdate
FROM artikel
 WHERE id='10'

Stell Dir nun vor, du hättest eine Tabelle HUGO mit den Spalten ID, EK, LASTDATE und genau einer Zeile. Dein DateDiff sähe dann so aus:

SELECT id, ek, lastdate, datediff(lastdate, '2017-06-21') FROM hugo

Statt der Table hugo nehmen wir nun die Abfrage von oben - eine SELECT Abfrage kann die Stelle einer Table einnehmen.

SELECT L.id, L.ek, L.lastdate, datediff(L.lastdate, '2017-06-21')
FROM (SELECT id, ek, (SELECT date FROM history WHERE history.artikel=artikel.id LIMIT 1) as lastdate
      FROM artikel
      WHERE id='10') hugo

Table-Expressions im FROM brauchen immer einen Alias, darum steht der Hugo noch da. Habe ich jetzt nicht in der DB getestet, nur hier getippt, müsste aber so funzen.

Rolf