Ich habe Probleme mit SQL: Grundsätzlich versuche ich, eine Ergebnismenge zurückzubekommen, die eine Summe ALLER Fragen enthält, die an Mitarbeiter gestellt wurden (gruppiert nach Unternehmen), und füge auch die "onetime_items" hinzu, die manuell Elemente in a hinzugefügt werden andere Tabelle.
Ich habe derzeit diese SQL-Anweisung (ich verwende MySQL):
SELECT
CONCAT_WS(
', ', count(DISTINCT CONCAT(emailaddress, '_', e.id)),
(
SELECT GROUP_CONCAT(items SEPARATOR '; ') as OneTimeItems
FROM (
SELECT CONCAT_WS(
': ', oi.item_name, SUM(oi.item_amount)
) items
FROM onetime_item oi
WHERE oi.company_id = e.company_id
AND oi.date BETWEEN '2015-12-01'
AND LAST_DAY('2015-12-01')
GROUP BY oi.item_name
) resulta
)
) as AllItems,
e.id,
LEFT(e.firstname, 1) as voorletter,
e.lastname
FROM question q
LEFT JOIN employee e ON q.employee_id = e.id
WHERE 1=1
AND YEAR(created_at) = '2015'
AND MONTH(created_at) = '12'
GROUP BY e.company_id
Jetzt bekomme ich folgenden Fehler:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'e.company_id' in where clause
Die verwendeten Daten sind Dummy-Daten und die 1 = 1 am unteren Punkt der where-Klausel, da ich die where-Anweisung basierend auf Benutzereingabewerten generiere.
Alle Spalten sind im Tabellenmitarbeiter vorhanden, und der linke Join funktioniert (ich habe versucht, eine ID manuell einzugeben, anstatt die Spaltenreferenz zu verwenden, und es hat funktioniert, ich habe das richtige Ergebnis zurückerhalten).
Es tut mir auch leid, aber ich darf kein Tabellenschema oder irgendetwas im Zusammenhang mit der DB-Struktur online veröffentlichen.
Irgendeine Idee, warum der Verweis auf e.company_id fehlschlägt?
EDIT: Dies ist die Ergebnismenge, die ich brauche:
5, Het is je verjaardag: 1; Skivakantie: 1; Telefonische leadvergoeding: 8
Die Konstruktion ist wie folgt: 5 = führt durch Komma getrennt, um den Rest zu erhalten. Leads sind die eindeutige Kombination aus der Fragentabelle, und der Rest der Ergebnisse wird aus onetime_items erstellt.
BEARBEITEN 2 : SQL-Geige wirft immer wieder einen Fehler auf mich, also werde ich nur eine kleine erfundene Datenbank mit ein paar erfundenen Daten veröffentlichen: http://pastebin.com/cCveVtGr
GROUP BY
Funktioniert "nach" Auswahl (stark vereinfacht), sodass manchmal die nicht ausgewählten Spalten nicht angezeigt werden (kann von Optimierungen abhängen, die der Planer für Ihre Abfrage usw. vornimmt). Also , e.company_id
nachher hinzufügen e.lastname
.