2012-03-17 4 views
0

Я вставляю данные в строку таблицы mysql, используя несколько методов: 1 # 2 # 3. 1 - ID страны, 2 - Идентификатор штата, 3 - ID города. теперь у меня есть эта таблица для объектов недвижимости. для каждого списка (дома) у меня есть страна/государство/город (1 # 2 # 3). в стране таблица у меня есть список страны - в стране таблицы у меня есть список государств - в стране таблицы у меня есть список города. Мне нужно количество домов в стране/штате/городе. я имею в виду:Count DISTINCT multiple mysql rows query

USA [ 13 ] <!-- This Is equal of alabama+alaska+arizona --> 
----Alabama [8] <!-- This Is equal of Adamsville+Addison+Akron --> 
-------Adamsville [2] 
-------Addison[5] 
-------Akron[1] 
......(list of other City) 
----Alaska [ 3 ] 
-------Avondale[3] 
......(list of other City) 
----Arizona [ 2 ] 
-------College[2] 
......(list of other City) 

Lisintg Таблица:

ID -- NAME -- LOCATION -- DATEJOIN -- ACTIVE 
1 -- TEST -- 1#2#3 -- 20110101 -- 1 
2 -- TEST1 -- 1#2#3 -- 20110101 -- 1 
3 -- TEST2 -- 1#3#5 -- 20110101 -- 1 
4 -- TEST3 -- 1#7#6 -- 20110101 -- 1 

Страна Таблица:

id  -- name 
1  -- USA 

статистика Таблица:

id  -- countryid -- name 
1  -- 1   -- albama 
2  -- 1   -- alaska 
3  -- 1   -- akron 

город Таблица:

id  -- countryid -- statsid -- name 
1  -- 1   -- 1   -- adamsville 
2  -- 1   -- 1   -- addison 
3  -- 1   -- 1   -- akron 

Спасибо за любую помощь.

+1

Ваша схема не совсем ясна. Можете ли вы опубликовать свои определения таблиц? – liquorvicar

+0

Добавил Мои Таблицы Страна/статистика/город/листинг на мой вопрос. –

+0

Действительно ли вы храните 'location' как строку из трех' '' разделенных чисел, например, вы показываете '1 # 2 # 3'? Если это так, вам действительно нужно сначала исправить вашу таблицу. Это было бы хорошим началом в любом случае, потому что имена столбцов, такие как 'selector1' и' selector2', не имеют никакого смысла. – Arjan

ответ

0

Я не знаю вашу схему таблицы, но вы можете попробовать:

SELECT count(DISTINCT country_name) FROM `tbl_country` 

отсчет() функция возвращает номер строки

0

Я не думаю, что ваша схема идеальна, и вы должны Посмотрите на его изменение.

  • Ваше поле местоположения в таблице содержит не одну вещь. Может быть, он должен просто хранить идентификационный номер города, так как вы можете выработать из него государство и страну?
  • Ваши столбцы «селектора» в других таблицах плохо названы. Кто они такие? Являются ли ссылки на внешние ключи идентификаторами в других таблицах? Если это так, назовите их как таковые.

Таким образом, я думаю, что вы пытаетесь достичь - это сумма всех отдельных списков в каждом географическом районе. Если это так, вы должны посмотреть на SELECT...GROUP BY. Что-то вроде этого

SELECT location,count(*) 
FROM listings 
GROUP BY location 

Это даст вам список каждого отдельного места и сколько раз он появляется в таблице списка.

+0

Это имя можно себе представить. но im my e.x selector = ID имени –

+0

@SaimonAvazian Я бы предложил переименовать их, чтобы они были очевидны, и вам не нужно это объяснять! – liquorvicar