[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите с запросом
kolobok
Добрый день
Помогите плиз сделать запрос.
Есть 2 таблицы
одна relate в ней хранится количество (quantity) штук

ropcion_id product_id quantity

1 30 0
2 30 2
3 30 2


вторая relate_opcion

ropcion_id product_id opcion_id opcion_value_id

1 30 11 46
1 30 7 49
1 30 5 39
2 30 11 47
2 30 7 49
2 30 5 39
3 30 11 48
3 30 7 49
3 30 5 39


суть в том что продукт имеет связку из нескольких опций, к примеру цвет (opcion_id 11) - красный (opcion_value_id 46), размер (opcion_id 7) - маленький (opcion_value_id 49), форма (opcion_id 5) - квадрат (opcion_value_id 39) это связка ropcion_id = 1
вторая связка цвет (opcion_id 11) - синий (opcion_value_id 47), размер (opcion_id 7) - маленький (opcion_value_id 49), форма (opcion_id 5) - квадрат (opcion_value_id 39) это ropcion_id = 2
и т.д.

есть цикл
foreach ($products as $product) {
получаем $product_id $opcion_id $opcion_value_id 3 раза, так как в продукте 3 опции (красный-большой-квадрат) к примеру.
нужен сюда запрос что бы получить $quantity из таблицы relate
}
надеюсь понятно объяснил )
Zzepish
А не проще ли запилить через left join?
kolobok
я не знаю ка и что тут надо запилить, в многотабличных запросах я почти 0, а тут еще надо учесть как то несколько одинаковых параметров. поэтому и прошу помочь составить запрос
не важно как он будет выглядеть, главное результат
Zzepish
Давай ты начнешь с нормального форматирования таблица-данные, а то все сливается, и нет удовольствие это разбирать
kolobok
user posted image
user posted image
123456
kolobok
Структура таблиц понятно, но вот что тебе надо получить - не понятно.
123456
Если правильно понял, то пробуй так

SELECT t1.*, t2.`quantity` FROM `relate_opcion` AS t1
LEFT JOIN `relate` AS t2 ON t1.`ropcion_id` = t2.`ropcion_id`
kolobok
нет, выводит вообще черте что. мне надо получить к примеру 0, 0, 0 если продукт красный маленький квадрат
если смотреть по связкам то opcion_value_id 2 штуки одинаковые, а 1 разная, в данном примере разная это цвет. в данном примере 3 продукта отличающимся по цвету

красный маленький квадрат
синий маленький квадрат
зеленый маленький квадрат.

тоесть надо как то сравнить 3 параметра и получить ropcion_id

есть цикл
первый проход, мы получаем
$ product_id = 30
$opcion_id = 7
$opcion_value_id = 49
если просто создать запрос то выдаст ropcion_id = и 1 и 2 и 3,
второй проход
$ product_id = 30
$opcion_id = 5
$opcion_value_id = 39
опять выдаст ropcion_id = и 1 и 2 и 3,
третий проход
$ product_id = 30
$opcion_id = 11
$opcion_value_id = 46
выдаст только ropcion_id = 1
если отсортировать все варианты в которых есть все три запросо то получим 1, что и надо получить.
вот как то так
kolobok
я так понимаю, что спецов тут нет wink.gif
Guest
Так http://sqlfiddle.com/#!9/e3e725b/1 ? smile.gif
S.Chushkin
Цитата (kolobok @ 23.06.2016 - 23:37)
я так понимаю, что спецов тут нет wink.gif

Спецы есть. Вопроса нет.

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
kolobok
Цитата (S.Chushkin @ 24.06.2016 - 08:18)
Цитата (kolobok @ 23.06.2016 - 23:37)
я так понимаю, что спецов тут нет  wink.gif

Спецы есть. Вопроса нет.

S.Chushkin что вам конкретно не понятно ? уже все выложил и разжевал, структура таблиц есть, входящие переменные есть, вопрос есть. Что еще вам надо ?
Увас как в том анекдоте, я им и толчек приносил и жопу показывал, а туалетной бумаги они мне так и не дали wink.gif


Guest а куда там переменные прописывать ?

S.Chushkin
Не знаю зачем я влез sad.gif , но попробуем, вдруг ошибаюсь и Человек действительно хочет научиться...

Вопроса нет тчк
1) Объясните, что Вам надо профессиональным языком разраба. Ну или хотя бы простым человеческим, если не владеете проф.
2) Пишите коротко и ясно, без воды, - никто не будет разбираться ни в Ваших каракулях ни в Вашем потоке мыслей.
3) Формулируя вопрос, всегда помните, что "правильно заданный вопрос, это половина правильного ответа". Вы должны понимать, какой ответ Вы хотите получить, в соответствии с этим формируйте вопрос. Грубо говоря, - задавая вопрос про Сферического Коня, получите Сферический Ответ, задавая конкретный вопрос по конкретной задаче/проблеме, получите конкретный ответ.

И так, поехали... (п.с. напишите правильно - дам правильный ответ)

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
kolobok
мне кажется в первом посте я ясно обьяснил, повторю еще раз

есть цикл
foreach ($products as $product) {
получаем $product_id $opcion_id $opcion_value_id столько раз, сколько в продукте опций (от 2 и выше) в данном примере 3 раза, так как в продукте 3 опции (красный-большой-квадрат) к примеру.
в данное место нужен запрос что бы получить $quantity из таблицы relate
в данном примере должны получить 0, 0, 0
}

таблицы приведены выше.
вот скажите что конкретно вам тут не ясно ?
Zzepish
kolobok
можно решить через left join. Не вижу проблемы. Пример бросили выше.
SELECT t1.*, t2.`quantity` FROM `relate_opcion` AS t1
LEFT JOIN `relate` AS t2 ON t1.`ropcion_id` = t2.`ropcion_id`

По данному примеру можно вывести любые данные (если его чуть переделать +-)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.