Нужно выбрать из таблици уникальные значения. Имеються поля: `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, раньше не использовал
Спустя 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
может так будет понятней
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
Если нужно, чтобы уникальной была связка этих двух полей, то тот запрос, что Выше показал dadli, только оттуда убери HAVING

Спустя 18 минут, 27 секунд (21.03.2012 - 17:03) westside_90 написал(а):
Цитата (dadli @ 21.03.2012 - 13:44) |
westside_90 тогда так: SELECT * FROM sometable WHERE id IN |
вот это сработало, разобрался вроде бы, вот такой вот запросик вышел:
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