Как сделать правильный запрос с помощью Yii2?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
damasco
Сообщения: 8
Зарегистрирован: 2015.03.05, 06:21

Как сделать правильный запрос с помощью Yii2?

Сообщение damasco »

Есть стандартные таблицы отношения многие-ко-многим.

post: id, name;
tag: id, name;
post_tag: post_id, tag_id;

Нужно найти 2 поста, у которых наибольшее количество общих тегов.
lynicidn
Сообщения: 2222
Зарегистрирован: 2014.05.24, 15:12

Re: Как сделать правильный запрос с помощью Yii2?

Сообщение lynicidn »

а как сделать это без помощи Yii2? на чисто mysql?
lynicidn
Сообщения: 2222
Зарегистрирован: 2014.05.24, 15:12

Re: Как сделать правильный запрос с помощью Yii2?

Сообщение lynicidn »

т.е. вы свои провалы в знаниях прикрываете недостаточностью информации о фреймворке?
damasco
Сообщения: 8
Зарегистрирован: 2015.03.05, 06:21

Re: Как сделать правильный запрос с помощью Yii2?

Сообщение damasco »

lynicidn писал(а):т.е. вы свои провалы в знаниях прикрываете недостаточностью информации о фреймворке?
Нет.

Я хочу понять, как это можно сделать.
lynicidn
Сообщения: 2222
Зарегистрирован: 2014.05.24, 15:12

Re: Как сделать правильный запрос с помощью Yii2?

Сообщение lynicidn »

damasco писал(а):
lynicidn писал(а):т.е. вы свои провалы в знаниях прикрываете недостаточностью информации о фреймворке?
Нет.

Я хочу понять, как это можно сделать.
На уии2 или вообще? Если вообще, то раздел для топика выбран неверно, если на Yii2, то напишите sql и вам его превратят в код на Yii2
damasco
Сообщения: 8
Зарегистрирован: 2015.03.05, 06:21

Re: Как сделать правильный запрос с помощью Yii2?

Сообщение damasco »

Код: Выделить всё

SELECT p1_id, p2_id, COUNT(hits) tag_count FROM (SELECT 
  p1.id p1_id,
  p2.id p2_id,
  COUNT(post_tag.tag_id) hits 
FROM (post p1, post p2)
RIGHT JOIN post_tag
ON (p1.id = post_tag.post_id) OR (p2.id = post_tag.post_id)
WHERE p1.id > p2.id
GROUP BY p1.id, p2.id, post_tag.tag_id
HAVING COUNT(post_tag.tag_id) > 1) counts
GROUP BY p1_id, p2_id
ORDER BY tag_count DESC
LIMIT 1
lynicidn
Сообщения: 2222
Зарегистрирован: 2014.05.24, 15:12

Re: Как сделать правильный запрос с помощью Yii2?

Сообщение lynicidn »

Код: Выделить всё

Yii::$app->db->createCommand('SELECT p1_id, p2_id, COUNT(hits) tag_count FROM (SELECT 
  p1.id p1_id,
  p2.id p2_id,
  COUNT(post_tag.tag_id) hits 
FROM (post p1, post p2)
RIGHT JOIN post_tag
ON (p1.id = post_tag.post_id) OR (p2.id = post_tag.post_id)
WHERE p1.id > p2.id
GROUP BY p1.id, p2.id, post_tag.tag_id
HAVING COUNT(post_tag.tag_id) > 1) counts
GROUP BY p1_id, p2_id
ORDER BY tag_count DESC
LIMIT 1')->queryAll() 
:roll:
Ответить