# 2014 - команды не синхронизированы;Вы не можете запустить эту команду сейчас SQL Subquery - PullRequest
1 голос
/ 06 октября 2019

Я просмотрел похожие вопросы и увидел несколько похожих вопросов с неясными ответами, поэтому решил, что я задам здесь.

'''
USE country_club;


SELECT fac.name,
       concat(mem.firstname, ' ', mem.surname) AS fullname,
       starttime =
  (SELECT starttime
   FROM Bookings
   WHERE starttime LIKE '2012-09-14%'),
       (slots * 30) AS mincost,
       CASE
           WHEN boo.memid=0 THEN boo.slots*fac.guestcost
           ELSE boo.slots*fac.membercost
       END AS cost
FROM Bookings AS boo
LEFT JOIN Members AS mem ON boo.memid = mem.memid
LEFT JOIN Facilities AS fac ON boo.facid = fac.facid
HAVING cost > 30;
'''

Ошибка появилась после того, как я добавил второе предложение SELECT, и язнаю, что это не лучший способ запроса, но это требование для моего задания.

1 Ответ

0 голосов
/ 06 октября 2019

Я считаю, что пункт SQL, вызывающий вашу проблему, заключается в следующем. (Если это не так, пожалуйста, отредактируйте свой вопрос, чтобы уточнить его.)

 WHERE ...
 starttime =
  (SELECT starttime
    FROM Bookings
    WHERE starttime LIKE '2012-09-14%'),

Это странная операция. Похоже, вам нужны все значения starttime на определенную дату. Так почему бы просто не сказать это в своем запросе? Вам нужно что-то вроде этого.

 WHERE ...
        starttime  >= '2012-09-14 00:00:00'
   AND  starttime < '2012-09-14 00:00:00' + INTERVAL 1 DAY

Я полагаю, что вы получаете ошибку "Команды не синхронизированы", потому что ваш запрос говорит

   SELECT WHERE .... value = (whole mess of values)

и ваш сервер MySQLпреследовал свой хвост, пытаясь понять вас, и в конечном итоге сдался, вместо того чтобы сразу отвергнуть его как синтаксическую ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...