Jump to content
  • 0

Выборка уникальных записей


Bolmazov
 Share

Question

В результате данного запроса получается дублирование строк. Как от него избавиться?

													SELECT DISTINCT * FROM event_table
JOIN seances_table
ON event_table.event_id = seances_table.event_id
WHERE seances_table.seance_date>'{$start_data}'
AND seances_table.seance_date<'{$finish_data}'

Link to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 0

Не знаю как выкрутится, так тоже что-то не правильно:

							$events=mysql_query("
SELECT * FROM
(
SELECT DISTINCT event.event_id FROM
(
SELECT DISTINCT * FROM event_table
JOIN seances_table
ON event_table.event_id = seances_table.event_id
WHERE seances_table.seance_date>'{$start_data}'
AND seances_table.seance_date<'{$finish_data}'

) AS event ORDER BY event.event_id ASC
ORDER BY event_id;
) AS events, seances_table
WHERE events.event_id = seances_table.event_id

;");

Link to comment
Share on other sites

  • 0

Уважаемый автор, вряд ли здесь есть веб-девелоперы-экстрасенсы. Я думаю, что никто не знает почему. В качестве помощи предлагаю ответить себе на следующие вопросы вопросы:

SELECT DISTINCT * FROM event_table

Зачем тут DISTINCT?

Не знаю как выкрутится, так тоже что-то не правильно

А что именно неправильно?

AS event ORDER BY event.event_id ASC ORDER BY event_id

Это что за безобразие?

AS events, seances_table

Это что такое?

Link to comment
Share on other sites

  • 0

Просто у меня при этом запросе:

							$TEST_events=mysql_query("
SELECT * FROM event_table
JOIN seances_table
ON event_table.event_id = seances_table.event_id
WHERE seances_table.seance_date>'{$start_data}'
AND seances_table.seance_date<'{$finish_data}'
;");

Есть повторяющиеся строчки типа:

event_id H Название события

512 0 Хор Турецкого

512 0 Хор Турецкого

512 0 Хор Турецкого

4285 0 Reel Big Fish

2910 0 Чартова дюжина

Как переписать, дописать запрос что бы исключить дублирующиеся строчки (по полю event_id) и поучить

event_id H Название события

512 0 Хор Турецкого

4285 0 Reel Big Fish

2910 0 Чартова дюжина

Link to comment
Share on other sites

  • 0

Очевидно, я не понимаю. Но как прикрутить сюда group by event_id и как оно поможет мне.

Хочу попробовать следующим образом:

Вот такой запрос хорошо работает. Он в table1 оставляет все строки с id которые есть в table2

	SELECT *
FROM table1
WHERE id
IN (SELECT id FROM table2)

Тоже самое я хочу замутить и в моем случае. Только вместо table2

Такая вот табличка:

													SELECT * FROM event_table
JOIN seances_table
ON event_table.event_id = seances_table.event_id
WHERE seances_table.seance_date>'{$start_data}'
AND seances_table.seance_date<'{$finish_data}'

а вместо id - event_id

Следовательно нужно наверное что-то типа:

													SELECT *
FROM event_table as e
WHERE e.event_id
IN (
SELECT event_id FROM event_table
JOIN seances_table
ON event_table.event_id = seances_table.event_id
WHERE seances_table.seance_date>'{$start_data}'
AND seances_table.seance_date<'{$finish_data}'
)

И вот он почему-то не работает!

Link to comment
Share on other sites

  • 0

Если

SELECT * FROM event_table
JOIN seances_table
ON event_table.event_id = seances_table.event_id
WHERE seances_table.seance_date>'{$start_data}'
AND seances_table.seance_date<'{$finish_data}'

дает нужный результат, но с повторяющимися строками, то в конец нужно добавить group by event_id и все будет в порядке

Link to comment
Share on other sites

  • 0

Спасибо большое. В очередной раз вы помогаете до конца в трудную минуту.

Но это не совсем то, что я хотел - таблица комментарием выше выдает только список нужных event_id но повторяющихся.

Нужно было в таблице event_table найти все строчки с этими event_id.

И вот что получилось (на мой взгляд работает медленно, но работает):

				$events=mysql_query("
SELECT *
FROM event_table as e
WHERE e.event_id
IN (
SELECT DISTINCT event.event_id
FROM (
SELECT * FROM event_table
JOIN seances_table
ON event_table.event_id = seances_table.event_id
WHERE seances_table.seance_date>'{$start_data}'
AND seances_table.seance_date<'{$finish_data}'
) AS event
)
ORDER BY e.event_name ASC;
");

Ещё раз всем спасибо.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy