@tryvols
Front-End разработчик

Как правильно построить поисковый запрос?

Здравствуйте, пытаюсь написать запрос для нормального считывания полей БД. Проблема вот в чем. Есть основная таблица. К ней подключено по id еще много таблиц, и в каждой из них, id из основной таблицы может встречаться не один раз. И для каждого повторения id во внешней таблице возвращается отдельная запись. Для небольшого кол-ва фильтров мне удалось написать клас на php, который приводит возвращаемый результат в порядок, но пришлось расширятся, а для большего кол-ва - это не дело.

Вот запрос:
'SELECT * FROM `companys`
INNER JOIN `countrys` ON `companys`.`company_id` = `countrys`.`company_id`
INNER JOIN `country_value` ON `country_value`.`value_id` = `countrys`.`value_id`
INNER JOIN `prices` ON `companys`.`company_id` = `prices`.`company_id` 
INNER JOIN `service_description` ON `service_description`.`description_id` = `prices`.`description_id` '


Получаемая выдача:

array(14) { ["company_id"]=> string(2) "66" ["name"]=> string(5) "iPage" ["href"]=> string(0) "" ["image"]=> string(54) "http://pickuphost.ru/wp-content/uploads/ipage-logo.jpg" ["VIP"]=> string(1) "0" ["free_period"]=> string(0) "" ["security"]=> string(0) "" ["VIP_value"]=> string(1) "0" ["country_id"]=> string(3) "124" ["value_id"]=> string(1) "1" ["price_id"]=> string(4) "1362" ["description_id"]=> string(1) "1" ["price"]=> string(4) "1627" ["service_name"]=> string(7) "VDS_min" } 

array(14) { ["company_id"]=> string(2) "66" ["name"]=> string(5) "iPage" ["href"]=> string(0) "" ["image"]=> string(54) "http://pickuphost.ru/wp-content/uploads/ipage-logo.jpg" ["VIP"]=> string(1) "0" ["free_period"]=> string(0) "" ["security"]=> string(0) "" ["VIP_value"]=> string(1) "0" ["country_id"]=> string(3) "232" ["value_id"]=> string(1) "2" ["price_id"]=> string(4) "1362" ["description_id"]=> string(1) "1" ["price"]=> string(4) "1627" ["service_name"]=> string(7) "VDS_min" } 

array(14) { ["company_id"]=> string(2) "66" ["name"]=> string(5) "iPage" ["href"]=> string(0) "" ["image"]=> string(54) "http://pickuphost.ru/wp-content/uploads/ipage-logo.jpg" ["VIP"]=> string(1) "0" ["free_period"]=> string(0) "" ["security"]=> string(0) "" ["VIP_value"]=> string(1) "0" ["country_id"]=> string(3) "463" ["value_id"]=> string(1) "6" ["price_id"]=> string(4) "1362" ["description_id"]=> string(1) "1" ["price"]=> string(4) "1627" ["service_name"]=> string(7) "VDS_min" } 

array(14) { ["company_id"]=> string(2) "66" ["name"]=> string(5) "iPage" ["href"]=> string(0) "" ["image"]=> string(54) "http://pickuphost.ru/wp-content/uploads/ipage-logo.jpg" ["VIP"]=> string(1) "0" ["free_period"]=> string(0) "" ["security"]=> string(0) "" ["VIP_value"]=> string(1) "0" ["country_id"]=> string(3) "490" ["value_id"]=> string(1) "7" ["price_id"]=> string(4) "1362" ["description_id"]=> string(1) "1" ["price"]=> string(4) "1627" ["service_name"]=> string(7) "VDS_min" } 

array(14) { ["company_id"]=> string(2) "66" ["name"]=> string(5) "iPage" ["href"]=> string(0) "" ["image"]=> string(54) "http://pickuphost.ru/wp-content/uploads/ipage-logo.jpg" ["VIP"]=> string(1) "0" ["free_period"]=> string(0) "" ["security"]=> string(0) "" ["VIP_value"]=> string(1) "0" ["country_id"]=> string(3) "550" ["value_id"]=> string(2) "10" ["price_id"]=> string(4) "1362" ["description_id"]=> string(1) "1" ["price"]=> string(4) "1627" ["service_name"]=> string(7) "VDS_min" } 

array(14) { ["company_id"]=> string(2) "66" ["name"]=> string(5) "iPage" ["href"]=> string(0) "" ["image"]=> string(54) "http://pickuphost.ru/wp-content/uploads/ipage-logo.jpg" ["VIP"]=> string(1) "0" ["free_period"]=> string(0) "" ["security"]=> string(0) "" ["VIP_value"]=> string(1) "0" ["country_id"]=> string(3) "570" ["value_id"]=> string(2) "11" ["price_id"]=> string(4) "1362" ["description_id"]=> string(1) "1" ["price"]=> string(4) "1627" ["service_name"]=> string(7) "VDS_min" } 

array(14) { ["company_id"]=> string(2) "67" ["name"]=> string(16) "Inmotion Hosting" ["href"]=> string(0) "" ["image"]=> string(65) "http://pickuphost.ru/wp-content/uploads/inmotion-hosting-logo.png" ["VIP"]=> string(1) "0" ["free_period"]=> string(0) "" ["security"]=> string(0) "" ["VIP_value"]=> string(1) "0" ["country_id"]=> string(3) "125" ["value_id"]=> string(1) "1" ["price_id"]=> string(4) "1363" ["description_id"]=> string(1) "1" ["price"]=> string(4) "1952" ["service_name"]=> string(7) "VDS_min" }
  • Вопрос задан
  • 179 просмотров
Пригласить эксперта
Ответы на вопрос 2
@vshvydky
Select t1.id, t1.data, ta2.data, t3.data from table1 t1, table2 t2, table3 t3 where t1.id=t2.id and t1.id=t3.id расширяй сколько хочешь
Ответ написан
tsklab
@tsklab
Здесь отвечаю на вопросы.
написать клас на php
Используйте инструментальные средства MS SQL (SSMS или SSDT) и помещайте запрос в хранимую процедуру для сохранения запроса на сервере.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы