MySql. Помоги Чайнику

235
09 мая 2018, 02:54

Есть такой запрос:

SELECT * 
FROM (SELECT `category` 
      FROM `publication` 
      WHERE `publication`.`category` = 2 
      LIMIT 0,50) AS D1
   , (SELECT `category`
      FROM `publication` 
      WHERE `publication`.`category` = 1 
      LIMIT 0,50) AS D2

в переменную прихдят лишь

` WHERE `publication`.`category` = 1`

т.е. только D2. как обьединить D1 и D2?

вот видете два поля приходит. Одна с категорией 1 вторая категорией 2. Как сделать чтобы это было в одном поле. Вобще там кроме категорий будет много полей

Answer 1

Если я что-нибудь понял, простейший способ - UNION:

(SELECT 1 FROM `publication` WHERE `category` = 1 LIMIT 50)
UNION ALL
(SELECT 2 FROM `publication` WHERE `category` = 2 LIMIT 50)

Второй вариант задачи:

Попробуй поставить разные алиасы. Может у тебя где-то category перетираются в ассоциативном фетче

SELECT * 
FROM (SELECT `category` d1
      FROM `publication` 
      WHERE `publication`.`category` = 2 
      LIMIT 0,50) AS D1
   , (SELECT `category` d2
      FROM `publication` 
      WHERE `publication`.`category` = 1 
      LIMIT 0,50) AS D2
Answer 2

Попытка решить в общем виде:

select category
from 
(
   select p.category,
      (@num:=if(@group=category, @num+1, if(@group:=category, 1, 1))) row_number 
  from publication
  CROSS JOIN (select @num:=0, @group:=null) c
  order by category
) as x 
where x.row_number <= 50;

Лимитирование осуществлено раздельно для каждой категории(@group) с помощью переменной-счётчика(@num).

Демонстрация

READ ALSO
Показать содержимое после 3 параграфа PHP

Показать содержимое после 3 параграфа PHP

Статья разбита параграфами есть задумка вставить похожий контент, но только через 3 параграфаКак в php можно сделать понять никак не могу

247
Back-end Чайник

Back-end Чайник

Когда удаляю эту часть и обновляю страницу, кодировка приходит в нормуПосле обновления страницы – можно вернуть строки и новейшие обновления...

221
Почему ответ true?

Почему ответ true?

http://sandboxonlinephpfunctions

236