Нужна помощь с запросом MySQL - PullRequest
1 голос
/ 13 сентября 2010

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

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 ]

4 голосов
/ 13 сентября 2010

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

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. Что пытается выполнить запрос?

2 голосов
/ 13 сентября 2010

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

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

0 голосов
/ 14 сентября 2010

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

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%'
...