@leopardo11

Можете объяснить этот MySQL запрос?

Можете объяснить, как это работает? Что откуда берется, куда присваивается?
SELECT r.*, u.username, u.fullname, u.avatar, IF (t.`type` is NULL, 'none', t.`type`) `type`
			FROM `{$iaCore->iaDb->prefix}reviews_clicks` r
				LEFT JOIN `{$iaCore->iaDb->prefix}members` u ON (u.`id` = r.`member_id`)
				LEFT JOIN `{$iaCore->iaDb->prefix}reviews_likes` t ON (t.`review_id` = r.`id` AND (t.`member_id` = '$userId' AND t.`member_id` != 0 OR t.`session_id` = '$sessionId'))
			WHERE r.`review_id` = '{$review['id']}' AND r.`item` = '$item' AND r.`status` = 'active'
			ORDER BY r.`date_added` DESC
			LIMIT "
  • Вопрос задан
  • 2294 просмотра
Решения вопроса 2
kawabanga
@kawabanga
Да легко

- SELECT r.*, ....
Выборка параметров из полученной выборки

FROM `{$iaCore->iaDb->prefix}reviews_clicks` r
из какой таблицы, где {$iaCore->iaDb->prefix} - это переменная php, а "r" - это алиас для таблицы

LEFT JOIN `{$iaCore->iaDb->prefix}members` u ON (u.`id` = r.`member_id`)
LEFT JOIN

далее идут два джоина, которые работают только в том случае, если данные в таблицах `{$iaCore->iaDb->prefix}members` и `{$iaCore->iaDb->prefix}reviews_likes` присутствуют. (гугли left join) , после каждого джоина срабатывает функция связки (ON (u.`id` = r.`member_id`))

далее блок where - это условие
далее блок order by - сортиврока
limit - это кол-во строк, которые нужно забрать .

Но вот вопрос, разве это так сложно самому было прочитать за 15-20 минут?
Ответ написан
Комментировать
FanatPHP
@FanatPHP
Чебуратор тега РНР
Этот запрос строит одну большую строчку из трех таблиц.
Сначала берет строчку из reviews_clicks, и дописывает к ней строчку из members по условию
members.`id` = reviews.`member_id`
дальше точно так же дописывается строчка из reviews_likes
и так для каждой строчки в reviews_clicks, подходящей под условие в WHERE

А еще из этого запроса берется SQL инъекция.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽