2016-04-08 8 views
2

Mein Table1Vergleichen Ausgabe der select-Anweisung

| Participantsid | Validfrom   | Validto   | 
    | 2,4,1    | 2016-02-21 10:22:00 | 2016-02-21 12:22:00 | 
    | 2,4,1    | 2016-03-04 10:00:00 | 2016-03-04 10:25:00 | 
    | 2,3,4,1   | 2016-02-19 10:43:00 | 2016-02-19 11:08:00 | 
    | 2,3,4,1   | 2016-02-22 11:32:00 | 2016-02-22 11:57:00 | 
    | 4,6,5    | 2016-02-20 17:00:00 | 2016-02-20 18:00:00 | 
    | 1,2,5    | 2016-02-22 18:00:00 | 2016-02-22 19:00:00 | 
    | 2,3,6,1   | 2016-03-23 10:00:00 | 2016-03-23 11:00:00 | 
    | 1,2,3,5   | 2016-02-20 12:00:00 | 2016-02-20 14:00:00 | 
    | 2,6    | 2016-02-20 12:00:00 | 2016-02-20 13:00:00 | 

Ein weiterer Table2

+--------------+------------+ 
| EmployeeName | EmployeeID | 
+--------------+------------+ 
| Mathews  |   1 | 
| Gerald  |   2 | 
| Bravo  |   3 | 
| Smith  |   4 | 
| George  |   5 | 
| Bailey  |   6 | 
| Stephen  |   9 | 
| Balu c  |   10 | 

Ich habe einige inputid des = 1,5,6. Jetzt muss ich diese Eingabe-IDs mit der Teilnehmer-ID aus Tabelle1 für ein gegebenes Gültig-Ab und Gültig-bis-Datum vergleichen, und wenn es eine Übereinstimmung gibt, muss ich den Namen erhalten, der dieser ID entspricht.

Beispiel: - inputid = 1,2,3 für from- 2016-02-22 18:00:00, bis-2016-02-22 19:00:00 sollte es mir o/p = mathews geben , gerald

ich zur Zeit zwei select-Anweisungen schriebe und mit einer for-Schleife, die mir das Ergebnis aber seine falschen

ich es in einer einzigen Abfrage aber keine Möglichkeit, in der Nähe meines erforderlich output.please zu tun versuchen gibt Hilfe

+0

Normalisieren Sie Ihre Daten – Strawberry

Antwort

2

Das gewünschte Ergebnis kann mit group_concat und find_in_set mit sub-query erreicht werden.

SQLFiddle: http://sqlfiddle.com/#!9/ce893/1

select group_concat(EmployeeName) as `o/p` 
from Table2 
where FIND_IN_SET(EmployeeID, 
    (select Participantsid from Table1 
    where Validfrom = '2016-02-22 18:00:00' and Validto = '2016-02-22 19:00:00')); 
Verwandte Themen