2013-10-07 3 views
1

Я пытаюсь соединить эти 4 таблицы:запрессовки 4 таблицы, связанные

клиентов:

  • id_customer;
  • имя;
  • фамилия

работодатели:

  • id_employer;
  • id_customer;

products_to_employer

  • id_product;
  • id_employer;

продукты

  • id_product;
  • имя_продукт;
  • код;
  • цена;

Где я в основном стараюсь получить все продукты клиента. В основном каждый продукт связан с id_employer, но каждый работодатель связан с клиентом, поэтому я хочу, чтобы все продукты, которые не связаны с работодателем, но с его «родительским» клиентом.

Результат я хочу, чтобы это:

Результат:

Пример: переменная $ id_customer: 4

продукты результат:

  • id_customer (идентификатор NR 4)
  • name_product;
  • имя_продукт;
  • код;
  • цена;

ответ

1

Это требование:

Где я в основном пытаюсь получить все продукты из клиента

Так что это просто вопрос применения некоторых объединений и where для фильтра на id_customer

select p.* from products p 
join products_to_employer pe on p.id_product = pe.id_product 
join employers e on pe.id_employer = e.id_employer 
join customers c on e.id_customer = c.id_customer 
where c.id_customer = 4 

ПРИМЕЧАНИЕ. Не нужно добавлять id_customer к результатам, поскольку вы уже фильтруете их.

+0

спасибо $ Mosty Mostacho, но, похоже, ситуация работала нормально, но с тех пор, как наниматель бот, многие из тех же продуктов в моем цикле while приносят продукт reptid, мне понравилось приносить только один раз, возможно в sql-запрос? – mauro

+1

Это работало, спасибо большое !!! :-) – mauro

+0

Здравствуйте, я забыл одну деталь, можно ли привести числа работодателей id @MostyMostacho? – mauro

0
select c.id_customer, c.name, p.name_product, p.code, p.price 
from products p 
    inner join products_to_employer pte on (pte.id_product = p.id_product) 
    inner join employers e on (e.id_employer = pte.id_employer) 
    inner join customers c on (c.id_customer = e.id_customer) 
where c.id_customer = 4 
Смежные вопросы