Mysql подзапрос правильно выбрать столбец - PullRequest
0 голосов
/ 11 июня 2018

У меня есть SQL-код, ниже которого результаты

SELECT user_id, proj_id, done
FROM  `project` 
WHERE theme = 1
AND user_id = 123
AND done =1

// результат

user_id     proj_id  done
123          17       1
123          18       1
123          20       1

как мне выбрать таким образом?

user_id | proj_id_17 | proj_id_18 | proj_id_19
123           1           1           0

Я знаю, что DISTINCT может выбрать уникальное значение, но моя проблема заключается в ВЫБОРЕ столбца

SELECT user_id
     , (SELECT proj_id=17 WHERE done=1) 
  FROM project 
 WHERE theme = 1 
   AND user_id = 123 
   AND done = 1

, если я выберу путь выше, он скажет

Подзапрос возвращает более 1 строки

если я выбираю несколько идентификаторов, например user_id IN (123, 456,789)

Мне нужно выбрать сотни идентификаторов, поэтому мне нужно ВЫБРАТЬ таким образом, чтобы предложение WHERE было

WHERE user_id IN(123,456,789, etc)

1 Ответ

0 голосов
/ 12 июня 2018

Мне удалось получить результаты должным образом, вот sql

SELECT user_id,
MAX((CASE WHEN proj_id = 17 AND done = 1 THEN 1 ELSE 0 END)) AS proj_17,
... until 23 etc
FROM project
WHERE theme = 1
AND user_id
IN(123, 456, 789,...)
GROUP BY user_id

, и я получаю результат примерно как

uid | proj_17 | proj_18 | ... etc
123      1         0
345      1         1
678      0         1

, что я и хотел, так что спасибо тем, ктоответил:)

@ Клубника, @M Халид Джунаид

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