Нужна помощь с запросом MySQL

Поэтому я пытаюсь сделать несколько сложный запрос, и у меня возникли проблемы. Я структурировал это так, как это кажется наиболее логичным:

SELECT (intake.id, s_matters.id, s_calls.cid, s_events.id) AS id, 
      (intake.name, s_matters.casename, s_calls.name, s_events.subject) AS title 
 FROM intake, s_matters, s_calls, s_events 
WHERE title LIKE '%mi%'

Это возвращает:

Код ошибки: 1241
Операнд должен содержать 1 столбец

Так что я знаю, что это как-то связано со структурой скобок, но я не знаю, как это сделать правильно.

3 ответа

Решение

Я подозреваю, что то, что требуется, лучше всего будет возвращено следующим:

SELECT id, name title, 'intake' table 
FROM intake WHERE name LIKE '%mi%'  
UNION ALL
SELECT id, casename title, 's_matters' table 
FROM s_matters WHERE casename LIKE '%mi%'  
UNION ALL
SELECT cid AS id, name title, 's_calls' table 
FROM s_calls WHERE name LIKE '%mi%'  
UNION ALL
SELECT id, subject title, 's_events' table 
FROM s_events WHERE subject LIKE '%mi%'

Псевдоним может ссылаться только на один столбец. Если псевдоним предназначен для последнего столбца в каждом списке, сделайте это:

SELECT intake.id, s_matters.id, s_calls.cid, s_events.id AS id, intake.name, 
    s_matters.casename, s_calls.name, s_events.subject AS title 
FROM intake, s_matters, s_calls, s_events 
WHERE title LIKE '%mi%' 

Также вам не хватает ON пункты из ваших объединений. Что пытается выполнить запрос?

Не понятно, что вы пытаетесь сделать

ВЫБЕРИТЕ concat(потребление.id, s_matters.id, s_calls.cid, s_events.id) AS id, concat(потребление.name, s_matters.casename, s_calls.name, s_events.subject) AS название FROM потребление, s_matters, s_calls, s_events ГДЕ название НРАВИТСЯ '%mi%

Может быть, то, что вы хотели. И, как указывает redfilter, в ваших объединениях отсутствуют предложения ON.

Другие вопросы по тегам