Форум SAPE.RU

Форум SAPE.RU (http://forum.sape.ru/index.php)
-   Разработка и сопровождение сайтов (http://forum.sape.ru/forumdisplay.php?f=29)
-   -   Помощь с запросом SQL (http://forum.sape.ru/showthread.php?t=65953)

avgaz 26.02.2011 00:02

Помощь с запросом SQL
 
Собственно есть запрос в БД который ищет в таблице region есть ли совпадения с таблицей dilers по полю region_id

PHP код:

$query $db->query"SELECT r.region_id, r.region_rus, d.region_id
    FROM region AS r
    LEFT JOIN dilers AS d ON(d.region_id = r.region_id)
    WHERE cid='"
.$id."'"); 

Но тут встала проблема если несколько записей d.region_id имеют одно и тоже значение то и выводится название несколько раз вот отсюда вопрос как сделать что бы регион не дублировался несколько раз??? а выводился только один

eresik 26.02.2011 00:06

Видимо использовать INNER JOIN вместо LEFT JOIN

avgaz 26.02.2011 00:26

Цитата:

Сообщение от eresik (Сообщение 1022583)
Видимо использовать INNER JOIN

Увы нет, результат возвращает повторения

eresik 26.02.2011 00:32

Цитата:

Сообщение от avgaz (Сообщение 1022593)
Увы нет, результат возвращает повторения

Ну тогда - SELECT DISTINCT

честно говоря - советую не вникая в запрос :)

ahsinis 26.02.2011 08:26

Я использую GROUP BY
PHP код:

$query $db->query"SELECT r.region_id, r.region_rus, d.region_id 
    FROM region AS r 
    LEFT JOIN dilers AS d ON(d.region_id = r.region_id) 
    WHERE cid='"
.$id."' GROUP BY r.region_id"); 

Правда логика запроса непонятна.
Вам надо выбрать дилера региона?
А если их несколько, как в вашем случае?

avgaz 26.02.2011 10:47

Цитата:

Сообщение от ahsinis (Сообщение 1022725)
Вам надо выбрать дилера региона?
А если их несколько, как в вашем случае?

Наоборот Регионы в которых есть дилер, но если в регионе два дилера то и регион два раза выбирается SELECT DISTINCT помогла

ahsinis 26.02.2011 16:17

Цитата:

Наоборот Регионы в которых есть дилер
Тогда надо использовать INNER JOIN, а не LEFT JOIN.

ЗЫ Если база спроектирована правильно, то у региона не может несколько раз один и тот же дилер повторяться и запрос в стартовом посте будет выбирать тоже самое что и с SELECT DISTINCT, который просто отсекает одинаковые записи.

avgaz 27.02.2011 02:51

Цитата:

Сообщение от ahsinis (Сообщение 1022961)
ЗЫ Если база спроектирована правильно, то у региона не может несколько раз один и тот же дилер

А речь и не идет о одном и том же дилере, в регионе разные дилеры и запрос должен выводить регионы в которых присутствуют дилеры и проблема если в регионе несколько дилеров то и сам регион дублируется.

ahsinis 27.02.2011 08:24

Цитата:

Сообщение от avgaz (Сообщение 1023361)
запрос должен выводить регионы в которых присутствуют дилеры и проблема если в регионе несколько дилеров то и сам регион дублируется.

для этого надо использовать INNER JOIN или условие WHERE d.region_id IS NOT NULL


Часовой пояс GMT +3, время: 02:37.

Работает на vBulletin® версия 3.8.7.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
SAPE.RU — система купли-продажи ссылок с главных и внутренних страниц сайтов.