Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не работает подзапрос / 19 сообщений из 19, страница 1 из 1
31.05.2016, 12:29
    #39247028
paha4444
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает подзапрос
Я выбираю список товаров, и к каждому товару хочу выбрать под-запросом 2 изображения из другой таблицы

Код: plsql
1.
2.
3.
4.
5.
6.
7.
        $sql  = " SELECT pov.product_id as product_id, 
                        
                         (SELECT * FROM `" . DB_PREFIX . "product_image`) as image
                         
                  FROM `" . DB_PREFIX . "product_option_value` pov ";
                  
        $sql .= " INNER JOIN `" . DB_PREFIX . "product_to_category` ptc ON pov.product_id = ptc.product_id AND ptc.category_id = 4 ";



Вот делаю подзапрос (SELECT * FROM `" . DB_PREFIX . "product_image`) as image , но пишет ошибку "Error: Operand should contain 1 column(s)<br />Error No: 1241"
немогу понять что ему не нравится. Спасибо.
...
Рейтинг: 0 / 0
31.05.2016, 12:41
    #39247048
retvizan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает подзапрос
paha4444,

то что вы выбираете несколько колонок (select *) вместо одной
...
Рейтинг: 0 / 0
31.05.2016, 12:51
    #39247064
paha4444
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает подзапрос
Теперь пишет "Subquery returns more than 1 row in"

Но и весь смысл в том, чтобы к выбраному товару в массиве было несколько изображений. Чтобы не липить из 2х массивов отдельно.
...
Рейтинг: 0 / 0
31.05.2016, 12:54
    #39247072
retvizan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает подзапрос
paha4444,

подзапрос должен выбирать одну строку/одно поле
делайте 2 подзапроса
...
Рейтинг: 0 / 0
31.05.2016, 12:57
    #39247077
paha4444
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает подзапрос
retvizan,

я помню как то делал через подзапрос и выбирал несколько изображений, но непомню как делал. Делать 2 подзапросами не получится, мне же нужно 2 разных изображения, а так оно будет выбирать 1е найденное изображение.
...
Рейтинг: 0 / 0
31.05.2016, 13:13
    #39247107
retvizan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает подзапрос
paha4444,

так оно пытается выбрать все изображения и поэтому отваливается с ошибкой
используйте where/order by/limit чтобы указать нужное изображение
...
Рейтинг: 0 / 0
31.05.2016, 13:20
    #39247120
paha4444
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает подзапрос
Код: plsql
1.
(SELECT image FROM `" . DB_PREFIX . "product_image` WHERE product_id = pov.product_id LIMIT 2) as image



Error: Subquery returns more than 1 row


Я вот думаю, а можно както групировать выборку из подзапроса в строку? А уже строку я буду разбивать в PHP
...
Рейтинг: 0 / 0
31.05.2016, 13:23
    #39247125
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает подзапрос
paha4444,

что-нибудь с GROUP_CONCAT, помещенным в переменную, и строковыми функциями снаружи
...
Рейтинг: 0 / 0
31.05.2016, 13:24
    #39247128
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает подзапрос
хотя если это 2 картинки, то не сработает... Скорее всего, только 2 JOIN-а
...
Рейтинг: 0 / 0
31.05.2016, 13:26
    #39247134
paha4444
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает подзапрос
Код: plsql
1.
GROUP_CONCAT((SELECT image FROM `" . DB_PREFIX . "product_image` WHERE product_id = pov.product_id LIMIT 2) SEPARATOR ',') as images



тоже ошибка Error: Subquery returns more than 1 row
...
Рейтинг: 0 / 0
31.05.2016, 14:13
    #39247196
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает подзапрос
paha4444,

image - это сама картинка, или ссылка на нее? тип поля - какой?

Если строка, то что-то вроде
Код: sql
1.
2.
3.
4.
5.
select ...,
  substring_index(@img=(select group_concat(image separator char(1)) from ... where ...),char(1),1) `первое`,
  substring_index(substring_index(@img,char(1),2),char(1),-1) `второе`
from ...
where ...
...
Рейтинг: 0 / 0
31.05.2016, 14:32
    #39247224
Не работает подзапрос
paha4444
Код: plsql
1.
GROUP_CONCAT((SELECT image FROM `" . DB_PREFIX . "product_image` WHERE product_id = pov.product_id LIMIT 2) SEPARATOR ',') as images



тоже ошибка Error: Subquery returns more than 1 row
Код: sql
1.
2.
(SELECT GROUP_CONCAT(image) FROM `" . DB_PREFIX . "product_image`
WHERE product_id = pov.product_id GROUP BY product_id) as images
...
Рейтинг: 0 / 0
31.05.2016, 14:34
    #39247225
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает подзапрос
Громыхатель,

а где я писал про GROUP BY во вложенном запросе?
...
Рейтинг: 0 / 0
31.05.2016, 14:35
    #39247227
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает подзапрос
а, сорь. прочитал сообщение об ошибке и сразу не понял
...
Рейтинг: 0 / 0
31.05.2016, 15:24
    #39247289
paha4444
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает подзапрос
Громыхатель,

спасибо. А можно сделать images в виде массива а не строкой?
...
Рейтинг: 0 / 0
31.05.2016, 15:44
    #39247310
Не работает подзапрос
paha4444, всмысле как "массива"?
...
Рейтинг: 0 / 0
31.05.2016, 15:54
    #39247323
paha4444
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает подзапрос
Громыхатель,

ну вот сейчас возвращает результат такого вида
"catalog/product/649-2782.jpg,catalog/product/649-2783.jpg,catalog/product/649-2784.jpg,catalog/product/649-2785.jpg,catalog/product/649-2786.jpg"
т.е. строка.

А чтобы было:

[images] => Array
(
[0] => catalog/product/649-2782.jpg
[1] => catalog/product/649-2783.jpg
[2] => catalog/product/649-2784.jpg
[3] => catalog/product/649-2785.jpg
[4] => catalog/product/649-2786.jpg
[5] => catalog/product/649-2787.jpg

)
...
Рейтинг: 0 / 0
31.05.2016, 15:57
    #39247328
Не работает подзапрос
...
Рейтинг: 0 / 0
31.05.2016, 16:23
    #39247364
paha4444
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает подзапрос
Громыхатель,

спасибо. я так и думал делать, просто думал может можно в MYSQL сразу разбивать.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не работает подзапрос / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]