Перейти к содержимому



Sql запрос к prop

#1 кипятильник
кипятильник
  • Неактивные
  • 102 сообщений
  • Репутация: 0
0

Обновлено 26 сентября 2014 - 19:50  Отправлено 09 сентября 2014 - 11:21

есть база к примеру

 

good | prop
-----------
1 |1
-----------
1 |2
-----------
2 |1
-----------
3 |2
 

нужно сделать запрос к prop с параметрами "1,2"

что бы вывело good "1"


 

 

  • 0

#2 kamchatniyoleg
kamchatniyoleg
  • Пользователь PRO
  • 1 179 сообщений
  • Репутация: 84

Отправлено 09 сентября 2014 - 13:08

Не понял сути задачи

SELECT `good` WHERE `good` = 1, `prop` = 2

Или если запрос выбирает вот эту строку, а вам нужны все строки дополнительно где указан "good" в значении "1"?


--------------------------------------------------------------------

Или вот так нужно?

SELECT * FROM `lalala` WHERE `prop` IN ('1', '2')

  • 0
Сервис электронного информирования клиентов PostTrail.ru
Отслеживание посылок Почты России в автоматическом режиме! Лояльность клиента - прибыль магазина!


#3 кипятильник
кипятильник
    Topic Starter
  • Неактивные
  • 102 сообщений
  • Репутация: 0

Отправлено 10 сентября 2014 - 11:01



--------------------------------------------------------------------

Или вот так нужно?

SELECT * FROM `lalala` WHERE `prop` IN ('1', '2')

Так точно не нужно, он выводит good 1,2,3

 

 

мне нужен такой запрос, что бы обратиться только к prop, и получить good 1


  • 0

#4 kamchatniyoleg
kamchatniyoleg
  • Пользователь PRO
  • 1 179 сообщений
  • Репутация: 84

Отправлено 10 сентября 2014 - 11:36

SELECT * FROM `lalala` WHERE `prop` IN ('1', '2') LIMIT 1 ORDER BY `good` ASC

Я не пойму что вы хотите и для чего вам это. Опишите подробнее задачу. 


  • 0
Сервис электронного информирования клиентов PostTrail.ru
Отслеживание посылок Почты России в автоматическом режиме! Лояльность клиента - прибыль магазина!


#5 matroskin8
matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 10 сентября 2014 - 12:03

 

мне нужен такой запрос, что бы обратиться только к prop, и получить good 1

 

Для этого нужно привязаться к какому-то уникальному значению, а в представленном примере таковых нет (ну а сервер, к счатью, не умеет читать мысли). По какому бы значению мы не обратились к prop (то ли 1, то ли 2), всегда будут выбраны несколько полей good: для prop = 1 это будет good 1 и 2, для prop 2, соответственно, good 1 и 3.

Добавьте для каждого поля уникальные значения (например, ID) и выбирайте по prop и ID.


  • 0


#6 кипятильник
кипятильник
    Topic Starter
  • Неактивные
  • 102 сообщений
  • Репутация: 0

Отправлено 10 сентября 2014 - 16:37

good - это ID Товара,

prop - это параметр товара

 

к примеру выбрав параметры по prop:1,2

мне нужно что бы высвечивало только тот товар который имеет эти значения тоесть good:1

SELECT * FROM `lalala` WHERE `prop` IN ('1', '2') LIMIT 1 ORDER BY `good` ASC

Я не пойму что вы хотите и для чего вам это. Опишите подробнее задачу. 

 


Сообщение отредактировал кипятильник: 10 сентября 2014 - 16:38

  • 0

#7 kamchatniyoleg
kamchatniyoleg
  • Пользователь PRO
  • 1 179 сообщений
  • Репутация: 84

Отправлено 10 сентября 2014 - 16:50

Так тогда не пишите в базу по несколько строк с одинаковой ID товара. Пишите значения через запятую и потом используйте LIKE, по моему так правильнее будет.


  • 0
Сервис электронного информирования клиентов PostTrail.ru
Отслеживание посылок Почты России в автоматическом режиме! Лояльность клиента - прибыль магазина!


#8 кипятильник
кипятильник
    Topic Starter
  • Неактивные
  • 102 сообщений
  • Репутация: 0

Отправлено 10 сентября 2014 - 17:02

к сожалению не могу так


  • 0

#9 matroskin8
matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 10 сентября 2014 - 18:01


к примеру выбрав параметры по prop:1,2 мне нужно что бы высвечивало только тот товар который имеет эти значения тоесть good:1

Для конкретного примера в первом сообщении:

SELECT * FROM goods WHERE prop IN ( 1, 2 ) GROUP BY good HAVING COUNT(good) > 1

Если нужно точное соответствие кол-ву параметров, тогда в выражении HAVING нужно передавать это кол-во, изменив оператор:

SELECT * FROM goods WHERE prop IN ( 1, 2 ) GROUP BY good HAVING COUNT(good) = 2

Но все же я бы задумался над изменением архитектуры БД.


  • 0


#10 kamchatniyoleg
kamchatniyoleg
  • Пользователь PRO
  • 1 179 сообщений
  • Репутация: 84

Отправлено 11 сентября 2014 - 08:05

кипятильник,matroskin8,  Полностью согласен с оратором выше. Архитектура БД не логична, на мой взгляд. На будущее вам будет проще сменить ее. Если у вас конечно эта таблица используется не в одном месте.


  • 0
Сервис электронного информирования клиентов PostTrail.ru
Отслеживание посылок Почты России в автоматическом режиме! Лояльность клиента - прибыль магазина!


#11 кипятильник
кипятильник
    Topic Starter
  • Неактивные
  • 102 сообщений
  • Репутация: 0

Отправлено 11 сентября 2014 - 11:31

а можете что то посоветовать? архитектуру таблиц


  • 0

#12 matroskin8
matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 11 сентября 2014 - 11:53

Для того, чтобы посоветовать что-то конкретное, нужно как минимум быть знакомым с ТЗ.
Ну а посоветовать в общем, конечно же, можно: при проектировании БД желательно учитывать формы нормализации. Не всегда это возможно и нужно (иногда приходится сознательно денормализовать часть данных), но в большинстве случаев желательно. В сети можете найти множество статей с примерами, описывающими суть нормальных форм.


  • 0


#13 кипятильник
кипятильник
    Topic Starter
  • Неактивные
  • 102 сообщений
  • Репутация: 0

Отправлено 11 сентября 2014 - 14:07

я хотел сделать как у них http://hotline.ua/au...5038-5045-5001/

при выборе параметров отображается тот товар который соответствует


  • 0

#14 кипятильник
кипятильник
    Topic Starter
  • Неактивные
  • 102 сообщений
  • Репутация: 0

Отправлено 12 сентября 2014 - 15:36

кто подскажет как сделать так? 

http://hotline.ua/au...5038-5045-5001/


Сообщение отредактировал кипятильник: 12 сентября 2014 - 15:36

  • 0

#15 кипятильник
кипятильник
    Topic Starter
  • Неактивные
  • 102 сообщений
  • Репутация: 0

Отправлено 15 сентября 2014 - 08:56

можно и за деньги! только подскажите как у них


  • 0

#16 fedornabilkin
fedornabilkin
  • Модератор
  • 1 192 сообщений
  • Репутация: 206

Отправлено 15 сентября 2014 - 11:52

При такой структуре БД возможно сделать запросы на каждый параметр и потом проверить.

Выводить только те товары, которые соответствуют фильтру.

Данные запроса кэшировать, что бы снизить нагрузку.


  • 0

Надо обсудить предложение. А тут знакосчиталка считает знаки. Про Yii2 написано.



#17 кипятильник
кипятильник
    Topic Starter
  • Неактивные
  • 102 сообщений
  • Репутация: 0

Отправлено 15 сентября 2014 - 14:00

можно подробней?


  • 0

#18 fedornabilkin
fedornabilkin
  • Модератор
  • 1 192 сообщений
  • Репутация: 206

Отправлено 15 сентября 2014 - 14:47

Стол    Деревянный

Стол    Красный

Стул    Деревянный

Стул    Зеленый

Шкаф   Пластиковый

Шкаф   Красный

Комод  Деревянный

Комод  Зеленый

Тумба Пластиковый

Тумба Зеленый

 

На каждый товар у нас два параметра. Это материал и цвет.

Получаем массив товаров, который соответствует параметру "материал". Например деревянный.

(Стол, стул, комод)

Получаем массив товаров, который соответствует параметру "цвет". Например Зеленый.

(Стул, комод, тумба)

 

Сравниваем массивы и отдаем массив с совпадениями (Стул, комод)

Этот же массив можно кэшировать, обновляя кэш при добавлении/редактировании товараов.


  • 0

Надо обсудить предложение. А тут знакосчиталка считает знаки. Про Yii2 написано.



#19 кипятильник
кипятильник
    Topic Starter
  • Неактивные
  • 102 сообщений
  • Репутация: 0

Отправлено 17 сентября 2014 - 10:09

а можно как то через запрос к базе? а то я думаю что у меня будет база с товаром 20 000 записей и параметрами 150 000 записей


  • 0

#20 кипятильник
кипятильник
    Topic Starter
  • Неактивные
  • 102 сообщений
  • Репутация: 0

Отправлено 19 сентября 2014 - 16:47

а кто знает как устроены инет магазины, принцип должен быть тот же!


  • 0

robot
robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Похожие темы
  Название темы Автор Статистика Последнее сообщение

Пользователь месяца
Megoydagi Megoydagi 1-й за Август
Очков активности: 30 4 темы, 8 сообщений, 1 балл репутации
Сайт: bank.net.ru
ТОП самых активных за этот месяц
  • Фотография Vmir
    #1

    Vmir
    Очков активности: 57 4 темы, 7 сообщений, 2 балла репутации

  • Фотография BLIK
    #2

    BLIK
    Очков активности: 40.5 Вне конкурса за определение пользователя месяца

  • Фотография Zevss
    #3

    Zevss (domles43.ru)
    Очков активности: 15 3 темы, 1 сообщение, 1 балл репутации

  • Фотография WGN
    #4

    WGN (worldgamenews.com)
    Очков активности: 12 1 тема, 5 сообщений, 1 балл репутации

  • Фотография Totti
    #5

    Totti
    Очков активности: 12 0 тем, 8 сообщений, 1 балл репутации

  • Фотография SergiuS85
    #6

    SergiuS85
    Очков активности: 12 2 темы, 2 сообщения, 1 балл репутации

  • Фотография kuztoday
    #7

    kuztoday
    Очков активности: 10.5 1 тема, 4 сообщения, 1 балл репутации

  • Фотография Sale_account
    #8

    Sale_account
    Очков активности: 10.5 2 темы, 1 сообщение, 1 балл репутации

  • Фотография kolver
    #9

    kolver
    Очков активности: 9 1 тема, 3 сообщения, 1 балл репутации

  • Фотография Megoydagi
    #10

    Megoydagi (bank.net.ru)
    Очков активности: 9 Вне конкурса за определение пользователя месяца

  • Показать весь ТОП 10

Поддержите форум! =)
Топ 5 участников по репутации

Оформление форума – IPBSkins.ru