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

> Помогите с запросом
kolobok  
 ۩  Дата
Цитировать сообщение

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



Новичок
*

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




Добрый день
Помогите плиз сделать запрос.
Есть 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
}
надеюсь понятно объяснил )
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Zzepish  
Дата
Цитировать сообщение

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



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

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 5583
Пользователь №: 32538
На форуме: 4 года, 11 месяцев, 28 дней
Карма: 56




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

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



Новичок
*

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




я не знаю ка и что тут надо запилить, в многотабличных запросах я почти 0, а тут еще надо учесть как то несколько одинаковых параметров. поэтому и прошу помочь составить запрос
не важно как он будет выглядеть, главное результат

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

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



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

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 5583
Пользователь №: 32538
На форуме: 4 года, 11 месяцев, 28 дней
Карма: 56




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

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



Новичок
*

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




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

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



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

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 894
Пользователь №: 30352
На форуме: 5 лет, 6 месяцев, 18 дней
Карма: 13




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

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



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

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 894
Пользователь №: 30352
На форуме: 5 лет, 6 месяцев, 18 дней
Карма: 13




Если правильно понял, то пробуй так

SELECT t1.*, t2.`quantity` FROM `relate_opcion` AS t1
LEFT JOIN `relate` AS t2 ON t1.`ropcion_id` = t2.`ropcion_id`
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
kolobok  
 ۩  Дата
Цитировать сообщение

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



Новичок
*

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




нет, выводит вообще черте что. мне надо получить к примеру 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, что и надо получить.
вот как то так
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
kolobok  
 ۩  Дата
Цитировать сообщение

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



Новичок
*

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




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


Гость пожелал остаться неизвестным

Unregistered









    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
S.Chushkin  
Дата
Цитировать сообщение

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



Пофигист
******

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




Цитата (kolobok @ 23.06.2016 - 23:37)
я так понимаю, что спецов тут нет wink.gif

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


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

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



Новичок
*

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




Цитата (S.Chushkin @ 24.06.2016 - 08:18)
Цитата (kolobok @ 23.06.2016 - 23:37)
я так понимаю, что спецов тут нет  wink.gif

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

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


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

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

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



Пофигист
******

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




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

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

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


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

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



Новичок
*

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




мне кажется в первом посте я ясно обьяснил, повторю еще раз

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

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

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



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

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 5583
Пользователь №: 32538
На форуме: 4 года, 11 месяцев, 28 дней
Карма: 56




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

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

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

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