Мне нужна помощь. я знаю, что столбец, который я создаю, имеет более 1 строки, но я не знаю, как его решить. У кого-нибудь есть идея?

select productid,pb.pricebookid,(select bookname 
                             from vtiger_pricebook p 
                             inner join vtiger_pricebookproductrel pbp
                                    on p.pricebookid = pbp.pricebookid
                             where pbp.pricebookid = '299182') Wx
from vtiger_pricebookproductrel pbp
join vtiger_pricebook pb
ON pb.pricebookid = pbp.pricebookid

enter image description here

Я действительно ожидаю этого введите описание изображения здесь

-1
Gladiador 27 Дек 2019 в 20:49
1
SELECT определяет, что показывать в каждой строке (т. Е. В 1 строке). Поэтому, если вы используете подзапрос в SELECT, убедитесь, что он возвращает не более 1 строки.
 – 
PM 77-1
27 Дек 2019 в 20:52
1
Положитесь на то, чего хотите. Вы можете использовать group_concat, чтобы увидеть все значения, разделенные запятыми из вашего подзапроса. Или может быть ограничение 1, если вы хотите одно значение
 – 
A Paul
27 Дек 2019 в 20:52
1
Разместите образцы данных и ожидаемых результатов, чтобы уточнить, чего вы хотите.
 – 
forpas
27 Дек 2019 в 20:56
Просто запустите подзапрос и проверьте результаты. Какой из них вам нужен для внешнего запроса? Обновляйте запрос, пока не получите только одну запись. Если он действительно возвращает только одну строку, это может быть случайно и может измениться в будущем, поэтому запрос должен быть написан таким образом, чтобы он мог возвращать только одну строку.
 – 
Andrew
27 Дек 2019 в 20:59
Запуск только подзапроса просто возвращает более 1 строки, и я хочу, чтобы он перечислил все в имени wx, которое я даю для столбца. Вот в чем дело
 – 
Gladiador
27 Дек 2019 в 21:13

1 ответ

Парень, спасибо за помощь, но я нашел, как решить себя. я просто использую свой подзапрос после пункта WHERE.

Итак, вот ответ:

SELECT productid,pb.pricebookid, listprice
FOM vtiger_pricebookproductrel pbp
join vtiger_pricebook pb
ON pb.pricebookid = pbp.pricebookid
WHERE pb.bookname IN (select listprice from vtiger_pricebook p inner join vtiger_pricebookproductrel pbp
ON p.pricebookid = pbp.pricebookid
WHERE pbp.pricebookid = '299182') 

ГДЕ pb.bookname В (ПОДКЛЮЧЕНИЕ ЗДЕСЬ)

0
Gladiador 27 Дек 2019 в 21:42
WHERE pb.bookname IN (select listprice ????? В этом нет никакого смысла. Каким образом название книги совпадает с прейскурантом? Полагаю, это подзапрос (select bookname..., верно? В любом случае такое сопоставление по названию книги выглядит плохой идеей. Вы должны использовать уникальные идентификаторы, например productid.
 – 
Andrew
30 Дек 2019 в 05:49