2015-01-30 4 views
0

Я пытаюсь получить запрос из двух таблиц. Это должно быть просто; однако мои результаты дублируются. Я не могу использовать DISTINCT или GROUP BY, поскольку нет уникального идентификатора. Для тестирования моя основная таблица имеет 87 строк. Без определения WHERE я получаю 174 результата. Мои две таблицы следующим образом:Соединение MySQL, вызывающее повторяющиеся результаты

стол - lifegroups_attendance (дата поле дата, время является VARCHAR)
Нет Уникальный идентификатор - комбо даты/времени/группа не будет ближе всего к нему

date | time | group| attendance 
-------------------------------- 
1/3/15 | 6:30 PM | Adults | 125 
1/3/15 | 11:00 AM | Adults | 621 
1/4/15 | Saturday | Kids | 289 
1/4/15 | Sun PM | Adults | 621 

стола - sat_week_date_map (начало недели суббота вместо MySQL построен в Sun или Mon опции)
даты является основным ID

date | week 
--------------- 
1/3/15 | 1 
1/4/15 | 1 
1/5/15 | 1 
1/10/15 | 2 

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

week | group | attendance 
1 | adults | 125 
1 | adults | 621 
1 | adults | 621 (This is not a duplicate - date/time is different) 
2 | adults | 475 
2 | adults | 276 
2 | kids | 289 

Вместо этого я получаю

week | group | attendance 
1 | adults | 125 
1 | adults | 621 
1 | adults | 621 (This is not a duplicate - date/time is different) 
2 | adults | 475 
2 | adults | 276 
2 | kids | 289 
1 | adults | 125 (repeats every record over again) 
1 | adults | 621 
1 | adults | 621 (This is not a duplicate - date/time is different) 
2 | adults | 475 
2 | adults | 276 
2 | kids | 289 

Запрос настоящее время я использую это:

SELECT wd.week, la.group AS group, la.attendance 
FROM  sat_week_date_map AS wd JOIN lifegroups_attendance AS la 
ON la.date = wd.date; 
+0

Непонятный вопрос. Ваш запрос возвращает 'week, date, attendandance', почему результат вашей выборки имеет« неделя, группа, посещаемость »? – Barmar

+0

Я не вижу, откуда взялись номера посещаемости в вашем результате. На входе нет '125' или' 621'. – Barmar

+0

Вы говорите, что второй «1 взрослый 621» не является дубликатом, потому что время другое. Но разве столбец посещаемости не должен отличаться в разное время, например, в таблице 'lifegroups_attendance'? – Barmar

ответ

0

Вы можете деформировать запрос с другим запросом, а затем использовать отчетливый :

SELECT distinct * 
FROM (SELECT wd.week, la.group AS group, la.attendance 
FROM  sat_week_date_map AS wd JOIN lifegroups_attendance AS la 
ON la.date = wd.date) 
0

Внимательно проверьте, есть ли у вас несколько записей за ту же дату в sat_week_date_map. Если есть несколько таких записей, они приведут к явно дублированным результатам.

SELECT date, COUNT(*) FROM sat_week_date_map GROUP BY date HAVING COUNT(*) > 1; 
Смежные вопросы