[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Выборка из БД уникальных строк
westside_90
Здравствуйте)

Нужно выбрать из таблици уникальные значения. Имеються поля: `id`, `number`, `type`, `value`, уникальным должно быть сочитание полей `number` и `type`. Хотя бы вытянуть `id` таких строк, уже дальше следующим запросом достал бы нужные мне строки.
Читал о подзапросах но не могу понять куда приткнуть...



Спустя 13 минут, 45 секунд (21.03.2012 - 13:46) Visman написал(а):
Именно, уникальные данные? Т.е. если есть в таблице две строки с одинаковыми `number` и `type`, то ни одной из них выводить не надо?

Спустя 4 минуты, 9 секунд (21.03.2012 - 13:50) westside_90 написал(а):
да, в таблице есть строки двух типов `type` = 0 и `type` = 1, и `number` от 1 до ..., есть строки с одинаковыми `number`, но разными `type`, они относяться к разным документам

Спустя 1 минута, 32 секунды (21.03.2012 - 13:52) dadli написал(а):
westside_90
так?

SELECT * FROM sometable GROUP BY `number`,`type`
HAVING
COUNT(*) < 2

Спустя 4 минуты, 54 секунды (21.03.2012 - 13:57) westside_90 написал(а):
Цитата (dadli @ 21.03.2012 - 10:52)
westside_90
так?

SELECT * FROM sometable GROUP BY `number`,`type`
HAVING
COUNT(*) < 2

щас попробую что выйдет, немного почитаю о HAVING, раньше не использовал

Спустя 2 часа, 28 минут, 29 секунд (21.03.2012 - 16:25) westside_90 написал(а):
для примера есть вот такая таблица:

id number type value
1 1 0 aa
2 1 0 bb
3 1 1 aa
4 1 1 db
5 2 1 uu
6 3 0 oo
7 3 0 aa
8 3 0 hh
9 3 1 nn
10 3 1 mm

из него должно выбрать:

1 1 0 aa
3 1 1 aa
5 2 1 uu
6 3 0 oo
9 3 1 nn

может так будет понятней

Спустя 18 минут, 49 секунд (21.03.2012 - 16:44) dadli написал(а):
westside_90
тогда так:

SELECT * FROM sometable WHERE id IN
(SELECT MIN(id) FROM sometable GROUP BY `number`,`type` )

Спустя 27 секунд (21.03.2012 - 16:44) inpost написал(а):
Тебе отдельно выбрать number, отдельно type все варианты уникальных? Тогда 2 запроса, каждый из них GROUP BY по уникальному полю.
Если нужно, чтобы уникальной была связка этих двух полей, то тот запрос, что Выше показал dadli, только оттуда убери HAVING smile.gif

Спустя 18 минут, 27 секунд (21.03.2012 - 17:03) westside_90 написал(а):
Цитата (dadli @ 21.03.2012 - 13:44)
westside_90
тогда так:

SELECT * FROM sometable WHERE id IN
(SELECT MIN(id) FROM sometable  GROUP BY `number`,`type` )

вот это сработало, разобрался вроде бы, вот такой вот запросик вышел:

SELECT `id`,`date`,`type`,`number`,`summa`,`kontragent`,`prymitka`,`status` 
FROM `nakladna`
WHERE DATE(`date`) BETWEEN '$min_date' AND '$max_date'
AND `id` IN (SELECT MIN(id) FROM `nakladna` GROUP BY `number`,`type`)
".$orderby." LIMIT $start,$finish
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.