Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / [SQL запрос] DISTINCT - по нескольким полям, одни запросом / 17 сообщений из 17, страница 1 из 1
19.05.2009, 12:20:14
    #35993698
Александр А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[SQL запрос] DISTINCT - по нескольким полям, одни запросом
Здравствуйте, скажите пожалуйста, можно ли выбрать уникальные значения из нескольких полей одним запросом?

Хочу выбрать одним запросом все уникальные значения из 2-х полей (field1, field2) чтобы потом создать массив и вывести результат на экран, но ни как не получается выбрать одним запросом (SELECT DICTINCT field1, field2 FROM table)

Результат этого запроса получается массив с выбранными 2-мя полями но значения НЕ уникальные (то есть повторяются), можно конечно убирать повторяющиеся значения функциями php или использовать DICTINCT только одному полю, но если есть метод получения одним запросом, то подскажите пожалуйста.

За ранее благодарен.
...
Рейтинг: 0 / 0
19.05.2009, 12:22:21
    #35993708
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[SQL запрос] DISTINCT - по нескольким полям, одни запросом
Код: plaintext
1.
2.
SELECT DICTINCT field1 FROM table
UNION ALL
SELECT DICTINCT field2 FROM table
так?
...
Рейтинг: 0 / 0
19.05.2009, 12:49:30
    #35993799
Александр А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[SQL запрос] DISTINCT - по нескольким полям, одни запросом
miksoft,

Ну практически ) Только позволь поправить не DICTINCT а DISTINCT (А то может кому то потребуется такой приём а он не будет работать) и результат не тот, для меня нужно чтобы результат был в разных массивах т.е используя функцию $field = mysql_fetch_row($result(mysql_query("SELECT DISTINCT field1 FROM table UNION ALL SELECT DISTINCT field2 FROM table")), я бы получал 2 массива:

$field[0] - Массив уникальных значений по полю field1, а
$field[1] - Массив уникальных значений по полю field2, а тут получается один массив с уникальными значениями 2-х объединённых столбцов.
...
Рейтинг: 0 / 0
19.05.2009, 13:00:59
    #35993837
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[SQL запрос] DISTINCT - по нескольким полям, одни запросом
делайте два отдельных запроса.

PS. Кстати, DICTINCT у вас же скопировал ;)
...
Рейтинг: 0 / 0
19.05.2009, 13:08:22
    #35993857
Александр А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[SQL запрос] DISTINCT - по нескольким полям, одни запросом
miksoft, - Спасибо.

Эх... придётся делать двумя запросами (А это лишнее время на запрос (где то 0.05 сек)).

Да опечатка DISTINCT это моя....только я что то не нашёл кнопки для редактирования сообщения, чтоб исправить и сделать замечание ))
...
Рейтинг: 0 / 0
19.05.2009, 13:19:22
    #35993904
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[SQL запрос] DISTINCT - по нескольким полям, одни запросом
Может, есть смысл перепроектировать БД и вынести эти поля в справочники?
...
Рейтинг: 0 / 0
19.05.2009, 13:21:24
    #35993911
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[SQL запрос] DISTINCT - по нескольким полям, одни запросом
Можно еще так:
Код: plaintext
1.
2.
3.
(SELECT DISTINCT field1,  1  field_num FROM table)
UNION ALL
(SELECT DISTINCT field2,  2  FROM table)
ORDER BY field_num
Тогда сможете отличить что откуда
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
18.05.2014, 18:51:31
    #38644567
alena22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[SQL запрос] DISTINCT - по нескольким полям, одни запросом
Знаю может не совсем по теме, но все равно помогите пожалуйста. есть запрос:
SELECT SUM( `время прохождения дистнации` )
FROM `результаты участников`
INNER JOIN `участиники соревнований` ON `результаты участников`.`порядковый номер участника` = `участиники соревнований`.`порядковый номер участника`
INNER JOIN `соревнования` ON `результаты участников`.`порядковый номер соревнований` = `соревнования`.`порядковый номер соревнования`
WHERE `пол` = "ж"
AND `дата рождения` =1990
AND `порядковый номер соревнования` =1
AND `команда` =1
ORDER BY `время прохождения дистнации`

нужно его доделать, чтоб в результат выводилось не только сумма прохождения дистанции одной команды, а несколько сумм разных команд.
...
Рейтинг: 0 / 0
18.05.2014, 18:56:20
    #38644569
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[SQL запрос] DISTINCT - по нескольким полям, одни запросом
alena22,

вот честно скажу - вечер воскресенья, лень думать (но ещё не лень исправлять орфоошибки)... дайте DDL таблиц, и будет вам запрос... в понедельник, около обеда по мск...

ЗЫ.
Код: sql
1.
2.
3.
SELECT SUM(  `время прохождения дистнации` ) 
<...>
ORDER BY  `время прохождения дистнации`

fatal mistake
...
Рейтинг: 0 / 0
18.05.2014, 19:02:23
    #38644575
alena22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[SQL запрос] DISTINCT - по нескольким полям, одни запросом
извините за орфографические ошибки. но мозг уже взрывается поэтому опечатки возможны. не подскажите ли мне не грамотной что такое DDL таблиц? и не смейтесь пожалуйста.
...
Рейтинг: 0 / 0
18.05.2014, 19:16:37
    #38644592
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[SQL запрос] DISTINCT - по нескольким полям, одни запросом
alena22что такое DDL таблиц?
Код: sql
1.
show create table имя_таблицы

для каждой таблицы, участвующих в запросе
результат - сюда, желательно текстом (не скриншотом)
alena22нужно его доделать, чтоб в результат выводилось не только сумма прохождения дистанции одной команды, а несколько сумм разных команд.а команды как-то задаются извне?
...
Рейтинг: 0 / 0
18.05.2014, 19:25:47
    #38644596
alena22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[SQL запрос] DISTINCT - по нескольким полям, одни запросом
таблицы:
группа (ID, порядковый номер участника. порядковый номер соревнований, сумма) (но данная таблица ждет удаления так как в принципе не нужна, поле сумма делала - пытаясь результаты сумм команд туда закинуть не получилось)
команда (ID, команда результат команды) тоже самое таблица не нужная
результаты (порядковый номер соревнований, порядковый номер участника, время прохождения дистанции)
соревнования (порядковый номер соревнования, дата проведения)
участники соревнований ( порядковый номер участника, фамилия, имя, отчество, пол, дата рождения, команда)
команда да, задается извне пользователем.
...
Рейтинг: 0 / 0
18.05.2014, 19:33:01
    #38644599
alena22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[SQL запрос] DISTINCT - по нескольким полям, одни запросом
все правильно написала? или что то не так?
...
Рейтинг: 0 / 0
18.05.2014, 19:49:42
    #38644608
alena22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[SQL запрос] DISTINCT - по нескольким полям, одни запросом
сделала при помощи UNION. правда результат выводится не совсем так как хотелось но уже прогресс - пол дня над этим сижу....
...
Рейтинг: 0 / 0
18.05.2014, 20:07:15
    #38644622
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[SQL запрос] DISTINCT - по нескольким полям, одни запросом
зачем юнион??
alena22команда (ID, команда результат команды) тоже самое таблица не нужная
результаты (порядковый номер соревнований, порядковый номер участника, время прохождения дистанции)
соревнования (порядковый номер соревнования, дата проведения)
участники соревнований ( порядковый номер участника, фамилия, имя, отчество, пол, дата рождения, команда)
команда да, задается извне пользователем.нужная

участники соревнований ( порядковый номер участника, фамилия, имя, отчество, пол, дата рождения, команда)
трансформируется в
участники соревнований ( порядковый номер участника, фамилия, имя, отчество, пол, дата рождения, идкоманды)

запрос
alena22чтоб в результат выводилось не только сумма прохождения дистанции одной команды, а несколько сумм разных команд.
получается таким
Код: sql
1.
2.
3.
4.
5.
select tr.id_team,sum(r.course_time)
from tournament tr
join results r on tr.id=r.id_tr
тут (и в секцию where) можно добавить джойн с таблицей команд и условия на включение команд в результат
where tr.id_team in (список_ид_команд)

таблицу участников джойнить нафиг не надо, если вам нужны только общие суммы результатов по командам (если нужно разбивать суммы по участникам, тогда, конечно, участники нужны)

и совет - всегда указывайте, к какой таблице какое поле относится
оно, конечно, необязательно, но может кучу нервов(и времени) в будущем сэкономить, причём необязательно вам :)
...
Рейтинг: 0 / 0
18.05.2014, 20:21:33
    #38644629
alena22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[SQL запрос] DISTINCT - по нескольким полям, одни запросом
спасибо, еще бы теперь разобраться....как разберусь скажу большоооое спасибо!
...
Рейтинг: 0 / 0
18.05.2014, 20:56:34
    #38644643
alena22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[SQL запрос] DISTINCT - по нескольким полям, одни запросом
знаю, очень нагло и не красиво, но не могли бы пояснить где какая группа у вас в записях.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / [SQL запрос] DISTINCT - по нескольким полям, одни запросом / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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