Запрос базы данных выберите информацию о клиенте - PullRequest
0 голосов
/ 10 октября 2018

У меня есть вопрос, я пытаюсь получить данные пользователя из базы данных со следующей информацией:

Мне нужно указать имя, фамилию и адрес электронной почты клиента, который приобрел продукт с помощьюссылки 1800 и 1898. до 2018-05-18.

Я пробовал этот запрос:

select
ps_customer.firstname, lastname , email
from
ps_customer
inner join
ps_product
where
ps_product.reference in (1800,1898) and ps_product.date_add >= 2018-05-18

, но это дает только всю информацию ALL клиентов обратнои это не то, что я хочу.

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Я бы предпочел присоединить таблицу ps_product к таблице ps_customer, используя уникальный ключ, общий для обеих таблиц (будь то идентификатор клиента или идентификатор продукта, зависит от столбцов, доступных в обеих таблицах), изатем поместите мои ограничения в отдельную оговорку where.Также укажите дату в предложении where в одинарных кавычках :

например,

select ps_customer.firstname, lastname , email
from ps_customer c
inner join ps_product p on c.customerid = p.customerid
where ps_product.reference in (1800,1898) and ps_product.date_add >= '2018-05-18';
0 голосов
/ 10 октября 2018

Предполагая, что все значения взяты из первой таблицы ps_customer, вы должны указать, в какую таблицу они входят, с table.column для всех значений, в то время как вы указали только первое значение.

Вы должны присвоить таблице псевдонимс AS для лучшей читаемости, пример ниже.

Вы также должны будете указать, к какому атрибуту присоединяются столбцы, в операторе ON.Значение должно быть одинаковым для обеих таблиц.

select cus.firstname, cus.lastname , cus.email 
from ps_customer AS cus
inner join ps_product AS prod
ON cus.uniqueKey = prod.uniqueKey
where prod.reference in (1800,1898) and prod.date_add >= 2018-05-18;

РЕДАКТ.Я считаю, что лучший способ структурировать этот запрос:

SELECT customer.firstname, customer.lastname, customer.email
FROM ps_product_sale AS sale               (if this is the table with sales records)
INNER JOIN ps_product AS product
      ON sale.id_product = product.id_product
INNER JOIN ps_customer AS customer
      ON customer.id_customer = sale.id_customer
WHERE product.reference in (1800,1898) 
      AND product.date_add >= 2018-05-18;
...