2013-10-07 66 views
1

我想加入這些4桌桌加入4個相關

  • id_customer;
  • 名稱;

僱主:

  • id_employer;
  • id_customer;

products_to_employer

  • id_product;
  • id_employer;

產品

  • id_product;
  • name_product;
  • code;
  • 價格;

我在哪裏基本上試圖獲得客戶的所有產品。基本上每個產品都與id_employer相關,但每個僱主都與客戶相關,所以我想要的是將所有與用戶無關的產品都帶給他,但是卻讓他的「父母」成爲客戶。

我想要得到的結果是:

結果:

例:變量$ id_customer:4

產品導致:

  • id_customer(ID NR 4)
  • name_product;
  • name_product;
  • code;
  • 價格;

回答

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但它會出現一個情況,查詢工作正常,但由於用人單位BOT許多同樣的產品在我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