Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> sql запрос к бд 
:(
    Опции темы
namra
Дата 2.7.2014, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 355
Регистрация: 26.4.2007

Репутация: нет
Всего: нет



Здравствуйте, помогите составить запрос использую БД MYSQL.
В таблице есть записи
1) Mercedes A180
2) Hundai Accent
3) Hundai Elentra

1) Выбираем категорию Авто с пробегом выдает все 3 записи
2) Выбираем марку Hundai должно выводится  две записи 2 и 3 
3) выбираем марку Hundai модель Accent должно выводиться только одна запись под номером 2

Данная конструкция не помогает, не знаю как еще 

Код

$advert=Material::model()->findAll('category=:category && mydate2>:mydate2 && (pole1=:marka || pole2=:model)',
array(':category'=>$_GET['category'],':mydate2'=>$tek_date,':marka'=>$_GET['marka'],':model'=>$_GET['model']));


Это сообщение отредактировал(а) namra - 2.7.2014, 11:20
PM MAIL   Вверх
Romikgy
Дата 2.7.2014, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: нет
Всего: 146



имхо данная конструкция не является sql запросом...


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
namra
Дата 2.7.2014, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 355
Регистрация: 26.4.2007

Репутация: нет
Всего: нет



ну я чтобы смысл был понятен написал, а так потом преобразую в нужную мне форму, мне главное увидеть конструкцию на чистом sql ка будет выглядеть
PM MAIL   Вверх
ТоляМБА
Дата 2.7.2014, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 4
Всего: 252



namra, допустим, есть таблица Table1
В ней поля Mark, Model, Probeg
В них данные:
----------------------------------
Mark           Model      Probeg
----------------------------------
Lada           Kalina     0
Mercedes    A180      12000
Hundai        Accent    5000
Hundai        Elentra   10000
Цитата(namra @  2.7.2014,  13:19 Найти цитируемый пост)
1) Выбираем категорию Авто с пробегом выдает все 3 записи

Код
Select *
From Table1
Where Probeg > 0

Цитата(namra @  2.7.2014,  13:19 Найти цитируемый пост)
2) Выбираем марку Hundai должно выводится  две записи 2 и 3 

Код
Select *
From Table1
Where Mark = "Hundai"

Цитата(namra @  2.7.2014,  13:19 Найти цитируемый пост)
3) выбираем марку Hundai модель Accent должно выводиться только одна запись под номером 2

Код
Select *
From Table1
Where Mark = "Hundai" and Model = "Accent"

PM   Вверх
namra
Дата 2.7.2014, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 355
Регистрация: 26.4.2007

Репутация: нет
Всего: нет



ТоляМБА,  то что вы написали  это я знаю, я хотел бы это выразить одной строкой sql  запроса не могу разобраться с логическими выражениями, или такое в принципе не возможно?
PM MAIL   Вверх
ТоляМБА
Дата 2.7.2014, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 4
Всего: 252



namra, можно и одной строкой - пишите между запросами UNION

Добавлено через 1 минуту и 52 секунды
Или так:
Код
Select *
From Table1
Where (Probeg > 0) or (Mark = "Hundai") or (Mark = "Hundai" and Model = "Accent")

PM   Вверх
namra
Дата 2.7.2014, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 355
Регистрация: 26.4.2007

Репутация: нет
Всего: нет



ТоляМБА, используя ваш запрос постоянно выдает все три
PM MAIL   Вверх
ТоляМБА
Дата 2.7.2014, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 4
Всего: 252



Вы написали три вопроса, я дал вам три запроса соответственно, вы хотели их (как я понял эти запросы) выразить одной строкой, пожалуйста!
Цитата(namra @  2.7.2014,  23:02 Найти цитируемый пост)
 я хотел бы это выразить одной строкой sql  запроса

Пишите тогда конкретно, что вы хотели выразить!
PM   Вверх
namra
Дата 2.7.2014, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 355
Регистрация: 26.4.2007

Репутация: нет
Всего: нет



Приложил картинку, есть поле select, допустим там выбрали категорию "Авто с пробегом",
выдает все авто которые есть в базе категория у которых "Авто с пробегом" - Mersedes 190, Hundai Accent, Hundai Elantra, теперь пользователь захотел сделать фильтр по категории "Авто с пробегом" но при этом выбрав определенную марку Hundai например (т.е Авто с пробегом марка Hundai ) должно выдать Hundai Accent, Hundai Elantra так как выбрали доп поле Марку Hundai , Mersedes хоть и относится к категории "Авто с пробегом", но не выдается в результатах так как мы выбрали определенную марку. Надеюсь понятно объяснил.

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  123.jpg 23,96 Kb
PM MAIL   Вверх
ТоляМБА
Дата 3.7.2014, 07:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 4
Всего: 252



Цитата(namra @  3.7.2014,  00:26 Найти цитируемый пост)
теперь пользователь захотел сделать фильтр по категории "Авто с пробегом"

Вот отсюда и начнём:
1. Если «авто с пробегом» то начальный запрос будет 
Код
Select * From Table1 Where (Probeg > 0)

2. Если «какое либо другое условие», то начальный запрос должен иметь вид 
Код
Select * From Table1 Where (<условие>)

3. Если «все авто» то начальный запрос будет 
Код
Select * From Table1 Where (1=1)


Опишу на Delphi, думаю переделать в php, Вам не составит труда.
На форме у Вас Доп. фильтры: Марка (Edit1 – поле для ввода марки) и Модель (Edit2 – поле для ввода модели).

SQLText – переменная типа строка, в ней будет наш текст для конченого запроса
Edit1.Text и Edit2.Text – содержимое полей Марка и Модель соответственно
Trim(Edit1.Text) и Trim(Edit2.Text)  – содержимое полей Марка и Модель соответственно без пробелов в начале и конце
TrimEditText – переменная типа строка в которой мы будем хранить указанные в предыдущей строке значения
Length(TrimEditText) – количество символов в переменной TrimEditText
QuotedStr(TrimEditText) – значение переменной TrimEditText взятое в кавычки.

Итак:
Код
var
  SQLText, TrimEditText : string;
begin
  SQLText:='Select * From Table1 Where (Probeg > 0)';
  TrimEditText:=Trim(Edit1.Text);
  if (Length(TrimEditText) > 0) then
      SQLText:=SQLText+' and Mark = '+QuotedStr(TrimEditText);
  TrimEditText:=Trim(Edit2.Text);
  if (Length(TrimEditText) > 0) then
      SQLText:=SQLText+' and Model = '+QuotedStr(TrimEditText);
end;


PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.1344 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.