@khodos_dmitry

Почему дважды происходит выборка при SQL запросе?

SELECT GROUP_CONCAT(CONCAT('<img class=\"ps-icon\" title =\"', 
		IF(`cpl_method_get`.`name` = `cpl_method_get`.`group`, `cpl_method_get`.`group`, CONCAT(`cpl_method_get`.`group`, ' (', `cpl_method_get`.`name`, ')')),
		'\" src=\"/img/ps/icon/', `cpl_method_get`.`img`, '.png\" >') SEPARATOR ' ') as `method_get` 
		FROM `cpl_mfo` JOIN `cpl_mfo-method_get` ON `cpl_mfo`.`name` = `cpl_mfo-method_get`.`mfo` JOIN `cpl_method_get` ON `cpl_mfo-method_get`.`method_get` = `cpl_method_get`.`name` JOIN `cpl_mfo_loans` ON `cpl_mfo_loans`.`mfo_id` = `cpl_mfo`.`id`

В method_get все значения выбираются четырежды.
Если убрать
JOIN `cpl_mfo_loans` ON `cpl_mfo_loans`.`mfo_id` = `cpl_mfo`.`id`

то все нормально.
Что выбирается, можно посмотреть здесь: https://credits-pl.ru/test/
Таблицы:
cpl_mfo
5abd0550b9df0347879689.png
cpl_mfo_loans
5abd056cf371c020232695.png
cpl_method_get
5abd05855ca4a496940709.png
cpl_mfo-method_get
5abd059c4e90e635978001.png
  • Вопрос задан
  • 173 просмотра
Пригласить эксперта
Ответы на вопрос 1
@justpusher
У вас mfo "Е-Капуста" соответствует 4 записи в cpl_mfo_loans.
Это значит, что после последнего джойна у вас будет 4 строчки для Е-Капусты, в которых поля всех таблиц кроме cpl_mfo_loans будут одинаковые. Вы их объединяете с помощью group_concat, поэтому получаете 4 раза одно и то же. Я советую вам убрать group_concat и поставить SELECT *, тогда вам будет понятнее, какие там данные.

P.S. на будущее: выкладывайте структуру таблиц и дампы в виде SQL-запросов (CREATE TABLE, INSERT), по скриншотам на глаз разбираться очень сложно.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы