Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) [1] 2  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> фильтр данных бд, требуется отфильтровать данные по выбранной подк. и огранич.
Sergeiqwe93  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 35
Пользователь №: 38863
На форуме: 11 лет, 1 месяц, 10 дней
Карма:




имеется бд. скрин нужной части ниже.
на сервер приходит массив

$a=$_REQUEST['sR'];

где $a[0] - это id подкатегории, все остальные элементы массива это ограничения (в виде ид элемента)
вот как отфильтровать данные по нужным нам ограничениям(элементом) и выбранной подкатегории. у меня нету пока никаких вариантов. Буду благодарен за любой совет или помощь.
внизу запрос, который фильтрует у меня данные по выбранной подкатегории:

$query = " SELECT Street.name, Adres.house, Organization.sh_name, Adres.gpsx, Adres.gpsy
FROM Adres, Organization, Street, Organ_Adres
WHERE Organ_Adres.id_organ = Organization.Id
AND Adres.Id = Organ_Adres.id_adres
AND Street.Id = Adres.id_street
AND Organization.id_subcat = "
.$a[0]." ";

структура бд ниже скачать файл bd.png

Присоединённое изображение
Присоединённое изображение
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Sergeiqwe93  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 35
Пользователь №: 38863
На форуме: 11 лет, 1 месяц, 10 дней
Карма:




может быть, я что то плохо описал, или требуются еще какие-то куски кода, могу добавить
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
inpost  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 23010
Пользователь №: 20039
На форуме: 15 лет, 3 месяца, 12 дней
Карма: 623




1)
AND Organization.id_subcat = ".$a[0]." ";
Но в таблице Organization нет колонки id_subcat .

2) Что за подкатегория? Я не вижу таблицы subcat


Очень тяжело разобраться. Гораздо проще было бы простым языком, вот города, вот страны, вот у меня есть такой параметр как "город = Украина" и хочу выбрать то и то.
П.С. Это лично мне.


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 6460
Пользователь №: 35718
На форуме: 12 лет, 4 месяца
Карма: 208




Цитата
Organization.id_subcat

я не вижу id_subcat ни в таблице Organization, ни в какой либо другой, это как так?
Сам запрос конечно "не фонтан".


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Sergeiqwe93  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 35
Пользователь №: 38863
На форуме: 11 лет, 1 месяц, 10 дней
Карма:




Цитата (Sergeiqwe93 @ 3.04.2014 - 17:13)
имеется бд. скрин нужной части ниже.
на сервер приходит массив

$a=$_REQUEST['sR'];

где $a[0] - это id подкатегории, все остальные элементы массива это ограничения (в виде ид элемента)
вот как отфильтровать данные по нужным нам ограничениям(элементом) и выбранной подкатегории. у меня нету пока никаких вариантов. Буду благодарен за любой совет или помощь.
внизу запрос, который фильтрует у меня данные по выбранной подкатегории:

$query = " SELECT Street.name, Adres.house, Organization.sh_name, Adres.gpsx, Adres.gpsy
FROM Adres, Organization, Street, Organ_Adres
WHERE Organ_Adres.id_organ = Organization.Id
AND Adres.Id = Organ_Adres.id_adres
AND Street.Id = Adres.id_street
AND Organization.id_subcat = "
.$a[0]." ";

структура бд ниже скачать файл bd.png

исправил

Присоединённое изображение
Присоединённое изображение
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Sergeiqwe93  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 35
Пользователь №: 38863
На форуме: 11 лет, 1 месяц, 10 дней
Карма:




пытался как-то так:

if (isset($_REQUEST['sR'])){
$a=$_REQUEST['sR'];
for($i==0; $i<count($a); $i++){
if($i==0){
$query = " SELECT Street.name, Adres.house, Organization.sh_name, Adres.gpsx, Adres.gpsy
FROM Adres, Organization, Street, Organ_Adres, No_barrier
WHERE Organ_Adres.id_organ = Organization.Id
AND Adres.Id = Organ_Adres.id_adres
AND Street.Id = Adres.id_street
AND No_barrier.value = 1
AND Organization.id_subcat = "
.$a[0]." ";
}

else{
$query =$query."AND No_barrier.id_elem = ".$a[$i]." ";
}
}
}


Это сообщение отредактировал Sergeiqwe93 - 3.04.2014 - 18:06
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Sergeiqwe93  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 35
Пользователь №: 38863
На форуме: 11 лет, 1 месяц, 10 дней
Карма:




здесь не полная структура бд. вставил только то что нужно для запроса.
попробую объяснить. есть категории организаций, они разделяются на подкатегории.
Также есть категории елементов(ограничений). В таблице элементы хранятся данные, к примеру, лестница, пандусы и т.д.
есть таблица nobarrer c помощью ее я связываю таблицы адрес и елемент(так как связь многи ко многим) поле value, ознаечает галичие, то есть 1-есть, 0-нет
если мне нужно отфильтровать данные для выбранной подкатегории - это не проблема, простой запрос, он у меня написан.
как мне написать расширенный фильтр с учетом выбранных ограничений?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Sergeiqwe93  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 35
Пользователь №: 38863
На форуме: 11 лет, 1 месяц, 10 дней
Карма:




наверное ни очень получилось на словах
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Sergeiqwe93  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 35
Пользователь №: 38863
На форуме: 11 лет, 1 месяц, 10 дней
Карма:




подскажите пожалуйста, что хоть почитать. пример может быть какой-то... вот запросы я писал часто, но с такой ситуацией не сталкивался. Кажется все просто, но есть сложность...
моим запросом я достаю все организации, адреса орг. и т.д.
организация может находится сразу по нескольким адресам, и по одному адресу может находится неск. орг. по этому возникла потребность в таблице Organ_Adres
для каждой такой связки есть n количество элементов, которые либо есть либо нет. Элементов, например, перила, лестницы, подъемники и т.д. всего их сейчас в бд 24 различных, имеющих свой уникальный идентификатор. Тоесть в таблице No_barrier будет 24 записи к каждой связке адрес_орган(ид_адрес_орган), имеющих значение 1 или 0. На вопрос зачем записи с 0? Заполнением бд, занимался не я. мне кажется было бы лучше только с 1 хранить. нужен запрос, который вернет мне name(организации).
имеется массив
$a, где a[0]-это ид подкатегории(можно даже взять категории, это не важно, вопрос в другом), остальные id елемента
помогите хоть чем. совет, если он не касается изменения структуры бд и данных - хорошо, пример - еще лучше. возможно все окажется просто, вот я просто кастыль писать не хочу с кучами запросов. помогите)
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
inpost  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 23010
Пользователь №: 20039
На форуме: 15 лет, 3 месяца, 12 дней
Карма: 623




какой фильтр, что надо получить.
Распиши конкретно ВХОДЯЩИЕ данные и ИСХОДЯЩИЕ. Придумаем тебе.


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Sergeiqwe93  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 35
Пользователь №: 38863
На форуме: 11 лет, 1 месяц, 10 дней
Карма:




входящие данные - Organization.id_subcat (можно id_cat_org), No_barrier.id_elem(их может быть несколько)
на выходе - например, Organization.name

Это сообщение отредактировал Sergeiqwe93 - 4.04.2014 - 05:05
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Sergeiqwe93  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 35
Пользователь №: 38863
На форуме: 11 лет, 1 месяц, 10 дней
Карма:




Ребята, ну помогите хоть чем... Вообще не знаю как подойти. то ли кучу селектов писать, то ли еще что-нибудь.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
inpost  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 23010
Пользователь №: 20039
На форуме: 15 лет, 3 месяца, 12 дней
Карма: 623




Согласно т/з:
входящие данные - Organization.id_subcat (можно id_cat_org), No_barrier.id_elem(их может быть несколько)
на выходе - Organization.name


SELECT a.`organization_name`
FROM `organization` a
LEFT JOIN `organ_adres` b ON `a`.`id` = b.`id_organ`
LEFT JOIN `Adres` c ON c.`id` = b.`id_adres`
LEFT JOIN `No_barrier` d ON d.`id_organ_adres` = b.`id_adres`
WHERE d.`id_elem` IN (".implode(',',$_GET['id_element']).")
OR d.`id` = ".(int)$_GET['id_barrier']."
OR b.`id_subcat` = ".(int)$_GET['id_subcat']."


Должно работать.
Дальше лишнее из WHERE убери, то есть в зависимости от входящих данных подставлять будешь нужное. Если данные будут дублироваться, то можно порезать очень просто через GROUP BY a.`id` или a.`organization_name` , или LIMIT 1.

_________________________________

На своей практике замечал, что несколько select во вложенности работают быстрее, чем LEFT JOIN, RIGHT JOIN. Поэтому не бойся строить лесенку, лучше 3 небольших запроса, чем 1 запрос столь сложный для БД, как я выше изобразил. Зато запрос сразу всё за тебя сделает.


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Sergeiqwe93  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 35
Пользователь №: 38863
На форуме: 11 лет, 1 месяц, 10 дней
Карма:




спасибо большое) пока не проверял, проверю-отпишу
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Sergeiqwe93  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 35
Пользователь №: 38863
На форуме: 11 лет, 1 месяц, 10 дней
Карма:




inpost, еще раз спасибо большое)
вот что получилось:
SELECT a.`sh_name`
FROM `Organization` a
LEFT JOIN `Organ_Adres` b ON `a`.`id` = b.`id_organ`
LEFT JOIN `Adres` c ON c.`id` = b.`id_adres`
LEFT JOIN `No_barrier` d ON d.`id_organ_adres` = b.`id`
WHERE d.`id_elem` IN (1,2,3)
and a.`id_subcat` = 1
and d.value =1 ORDER BY `a`.`sh_name` DESC

здесь
WHERE d.`id_elem` IN (1,2,3)

Оператор IN определяет набор значений в которое данное значение может или не может быть включено. А есть какой-нибудь оператор, который определяет набор значений должно быть обязательно вкл
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (2) [1] 2  Ответ в темуСоздание новой темыСоздание опроса