2016-04-08 26 views
2

Benim Tablo1select deyimi çıktısını karşılaştırın

| 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 | 

Başka Tablo2

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

Ben 1,5,6 = bazı inputid 's var. Şimdi bu girdi kimliğini Participantsid ile birlikte verilen bir geçerli ve geçerli bir tarih için tablo1'den karşılaştırmalıyım ve bir eşleşme varsa, bu kimliğe karşılık gelen adı almam gerekiyor.

Emaple: - inputid's = 1, 2016-02-22 18:00:00 arası, - 2016-02-22 19:00:00 bana vermelidir o/p = mathews , gerald

benim gerekli output.please yakın bana sonucunu ancak yanlış

tek bir sorguda bunu yapmaya çalışıyorum

ama hiçbir yol verir Şu anda iki seçme ifadeleri yazma ve döngü için bir tane kullanıyorum

Yardım

+0

Normale veri – Strawberry

cevap

2

İstenen sonuç group_concat ve find_in_set kullanılarak sub-query ile sağlanabilir.

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'));