powered by simpleCommunicator - 2.0.57     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Group By
7 сообщений из 7, страница 1 из 1
Group By
    #32272538
vivft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите как правильно избавиться от дублирования строк в результате поиска? (Как правильно вставить group by id_zajavka)

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

Пробовал вставить “group by id_zajavka” перед “HAVING” но поиск сразу начинает обрезать поисковые значения, а после “HAVING” отказывается вообще что-либо искать.
Помогите правильно вставить Groub by id_zajavka

Пример результата поиска:

--------------------------------------------------------------------------------
Фирма: Сапсан Страна: Россия, Города: Москва, Свердловск, Тула.
Даты заездов: 12-03-2003; 15-03-2003; 17-03-2003;
--------------------------------------------------------------------------------

Фирма: Сапсан Страна: Россия, Города: Москва, Свердловск, Тула.
Даты заездов: 12-03-2003; 15-03-2003; 17-03-2003;
--------------------------------------------------------------------------------
Фирма: Сапсан Страна: Россия, Города: Москва, Свердловск, Тула.
Даты заездов: 12-03-2003; 15-03-2003; 17-03-2003;
-------------------------------------------------------------------------------- и т.д.

Пример скрипта:


$show_rows = '10';

if (!isset($limit)) $limit=0;
else $limit=$limit-1;


$select = "SELECT id_tr, name_f, price, val, ....
case val
when '0' then price/$dkr
when '2' then price*$ekd
else price
end as newf ";

$from = " FROM travel, firms...";
$where = " WHERE travel.id_f_tr=firms.id_f ...
... special.id_special=travel.id_special_tr
HAVING newf <= '$cena'";

if ($nf != "") { $where .= " AND firms.name_f LIKE '%$nf%'";}
if ($ids != "") { $where .= " AND travel.id_special_tr = '$ids'";}
if ($ida != "") { $where .= " AND trg.id_are_trg = '$ida'";}
if ($idc != "") { $where .= " AND are.id_country_a = '$idc'";}

else {$where .="order by newf

LIMIT $limit,$show_rows";
$limit=$limit+1; }
...
Рейтинг: 0 / 0
Group By
    #32272551
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй http://www.mysql.com/doc/ru/SELECT.html] SELECT DISTINCT .
...
Рейтинг: 0 / 0
Group By
    #32272638
vivft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
:( уже пробовал и

SELECT DISTINCT ..
И
SELECT DISTINCT (id_zajavka), ...
...
Рейтинг: 0 / 0
Group By
    #32272658
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делай GROUP BY по все тем полям которые определяют у тебя "равность" записей!
...
Рейтинг: 0 / 0
Group By
    #32272867
vivft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я согласен, но куда его вставить?

Если вставить “group by id_zajavka” перед “HAVING” - поиск сразу начинает обрезать поисковые значения, а после “HAVING” отказывается вообще, что-либо искать.

Помогите правильно вставить Groub by id_zajavka
...
Рейтинг: 0 / 0
Group By
    #32272888
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
group by долже быть перед havingом всегда,

а в havinge могут быть только те поля, что в selectе

//не совсем понятно что значит "обрезать поисковые значения"...
...
Рейтинг: 0 / 0
Group By
    #32272941
vivft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если ставить group by перед Having
то он перестает проводить полный поиск в реляционных таблицах, через необязательные значения (ищет по первому значению, а второе ...пятое значенте искать отказывается):

if ($nf != "") { $where .= " AND firms.name_f LIKE '%$nf%'";}
if ($ids != "") { $where .= " AND travel.id_special_tr = '$ids'";}
if ($ida != "") { $where .= " AND trg.id_are_trg = '$ida'";}
if ($idc != "") { $where .= " AND are.id_country_a = '$idc'";}
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Group By
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]