2016-08-09 22 views
0

Bitte nehmen Sie sich einen Blick auf meine AnfragePassing Spalte in Unterabfrage funktioniert nicht

SELECT ht_tutor.id 
    ,(
     SELECT group_concate(days) 
     FROM (
      SELECT fkTutorId 
       ,days 
       ,(
        CASE 
         WHEN endTime <= '14:00:00' 
          THEN '00:00:00' 
         WHEN TIMEDIFF(startTime, '14:00:00') < '00:00:00' && TIMEDIFF('17:00:00', endTime) < '00:00:00' 
          THEN TIMEDIFF('17:00:00', '14:00:00') 
         ELSE '00:00:00' 
         END 
        ) AS intersect_time 
      FROM ht_tutorAvailablity 
      WHERE ht_tutorAvailablity.fkTutorId = ht_tutor.id 
      ) AS avail_table 
     ) AS days_avail 
FROM ht_tutor 
LIMIT 0,10 

ERROR: #1054 - Unknown column 'ht_tutor.id' in 'where clause'

Wie kann ich ht_tutor.id ihr passieren?

Wenn ich tutor_id manuell wie ht_tutorAvailablity.fkTutorId = "12" passiere, dann funktioniert es gut.

Antwort

0

Ich hoffe, Sie müssen JOIN in Ihrem Szenario verwenden. Die folgende Abfrage wird JOIN mit der TUT.id = AVA.fkTutorId Bedingung:

SELECT group_concate(days), id 
FROM (
    SELECT AVA.fkTutorId, AVA.days, TUT.id 
      CASE 
      WHEN AVA.endTime <= '14:00:00' 
       THEN '00:00:00' 
      WHEN TIMEDIFF(AVA.startTime, '14:00:00') < '00:00:00' && TIMEDIFF('17:00:00', AVA.endTime) < '00:00:00' 
       THEN TIMEDIFF('17:00:00', '14:00:00') 
      ELSE '00:00:00' 
      END AS intersect_time 
    FROM ht_tutorAvailablity AVA 
    JOIN ht_tutor TUT ON TUT.id = AVA.fkTutorId 
) AS avail_table 
LIMIT 0, 10