Tabelle einer - Arbeitsauftragdurch Komma getrennt
╔══════════╦══════════════╦══════════════╗
║ id ║ wpeople ║ start_date ║
╠══════════╬══════════════╬══════════════╣
║ 1 ║ 1,2,4 ║ 02.08.2016 ║
║ 2 ║ 4,5 ║ 28.09.2016 ║
╚══════════╩══════════════╩══════════════╝
Tabelle zwei - Mitarbeiter
╔══════════╦═════════════════╗
║ id ║ name ║
╠══════════╬═════════════════╣
║ 1 ║ John ║
║ 2 ║ Ben ║
║ 3 ║ Ian ║
║ 4 ║ Hank ║
║ 5 ║ George ║
╚══════════╩═════════════════╝
Output Auswahl für die am Projekt
arbeiten müssen╔══════════╦════════════════╦════════════╗
║ 1 ║ John,Ben,Hank ║ 02.08.2016 ║
║ 2 ║ Hank,George ║ 28.09.2016 ║
╚══════════╩════════════════╩════════════╝
Ich habe versucht mit GROUP_CONCAT und FIND_IN_SET
SELECT w.id,
GROUP_CONCAT(e.name ORDER BY e.id) workorder
FROM workorder w
INNER JOIN employees e
ON FIND_IN_SET(e.id, a.wpeople) > 0
GROUP BY w.id
Aber der Ausgang ist es
╔══════════╦════════════════╦════════════╗
║ 1 ║ John ║ 02.08.2016 ║
║ 1 ║ Ben ║ 02.08.2016 ║
║ 1 ║ Hank ║ 02.08.2016 ║
║ 2 ║ Hank ║ 28.09.2016 ║
║ 2 ║ George ║ 28.09.2016 ║
╚══════════╩════════════════╩════════════╝
ich für diese Suche auf Google und die Lösung ist es GROUP_CONCAT - FIND_IN_SET. Kann sein, dass ich diese Funktion nicht sehr gut verstanden habe.
Vielen Dank für Ihre Zeit! Stefan
Sie haben sowieso keinen 'a'-Alias, also wäre die Abfrage ein flacher Syntaxfehler. 'A.wpeople' existiert nicht. Und warum hast du deine Tische nicht von Anfang an normalisiert? Das Speichern mehrerer Datenwerte in einem zweiten Feld ist fast ein Zeichen für ein schlechtes Design. find_in_set() ist sehr ineffizient, da Indizes nicht verwendet werden können. –
Wie oben erwähnt, müssen Sie diese Daten denormalisieren. Das heißt, die Formatierung der Ausgabe sollte besser der Präsentationsschicht als der Datenschicht überlassen werden. Was verwenden Sie, um die Daten anzuzeigen? Eine Internetseite? Eine App? – mrunion
@ Marc Mein schlecht, ich vergesse ... um es zu ändern, in meinem Code ist es a und b, hier habe ich die Änderung e von Mitarbeitern und b Form Arbeitsauftrag @mrunion Ich benutze diese SQL-Abfrage für eine Anwendung, verwendet, um Arbeitsplätze für Mitarbeiter zu verwalten und am Ende eine E-Mail senden, um sie wissen zu lassen ... – zmeutz