2015-03-26 2 views
0

Я загрузил файл, содержащий zip-коды и советы, где я должен проверить, имеют ли все советы отношения «один на один» с его номером совета (как я тогда может хранить в нескольких таблицах, чтобы сэкономить место)Проверить отношение «один на один» - SQL

таблица прямо сейчас выглядит

councilnumber, int(3) 
council, varchar(25) 
zip, int(5) 

Как я могу проверить, если он имеет отношение один-на-один?

ответ

1
SELECT MIN(councilnumber), MAX(councilnumber), zip FROM tble group by councilnumber, council, zip HAVING MIN(councilnumber) <> MAX(councilnumber) 

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

SELECT MIN(councilnumber), MAX(councilnumber), zip FROM tble group by councilnumber, council, zip HAVING MIN(councilnumber) = MAX(councilnumber) 

Кстати, я не уверен, что 1to1 является правильным отношения. У меня может быть много почтовых ящиков. И в действительности некоторые молнии могут принадлежать 2 округам (по крайней мере, в США)

В этом случае я предлагаю вам использовать другую таблицу, которая имела бы ссылку на ZIP и COUNTY с собственным идентификатором. Тогда вы будете иметь возможность получить ZIP и графство из этого ID и он будет поддерживать многие-ко-многим

+0

Я знаю это, но я думаю, что совет должен иметь только один номер совета – The87Boy

+0

Вы правы, thx – The87Boy

0
SELECT councilnumber, count(council) as `count` FROM Councils group by councilnumber order by `count` desc 

и

SELECT council, count(councilumber) as `count` FROM Councils group by council order by `count` desc 

Если первая строка имеет count больше 1, что означает, что у вас более одного значения для совета совета или совета

Смежные вопросы