2017-05-22 28 views
-2

我有一個從prestashop數據庫找到表ps_product和ps_carrier之間的關係的問題。該架構可在http://doc.prestashop.com/display/PS16/Fundamentals+of+PrestaShop+Development獲得。如何查找長距離相關的表格之間的關係? MySQL

我需要通過加入這兩個表在我的店進行更新,但我努力尋找好鑰匙。我如何撰寫我的查詢?

+0

請編輯您的問題是自包含的,只使用文本。鏈接是短暫的,並且圖像部分不能被分割或粘貼。此外,該鏈接包含大量不相關的信息。另外,請儘可能準確地提供儘可能詳細的信息,例如您的更新代碼得到多少。 – philipxy

回答

0

代表業務關係/關聯。你提到的「關係」是FK(外鍵),而這些關鍵字並不需要查詢。他們聲明某些列的子值也必須是某些關鍵列的子值。所需要的是要知道當它在一張桌子上時,現在的商業情況是怎麼說的。 (其中,由於出現什麼情況,確定FKS等方面的限制。)

Required to join 2 tables with their FKs in a 3rd table

每個基地臺帶有一個謂語 - 被列名的參數化的報表模板。表值是使謂詞變爲真實語句的行。

查詢也有一個謂語。它的值也是使謂詞爲真的行。它的謂詞是根據它的FROM,WHERE和其他從句構建的。

(CROSS或內)JOIN puts和謂詞之間; UNION將OR放在它們之間;除了插入AND NOT和ON & WHERE和在一個條件中;當SELECT從T中刪除列C時,它將T的謂詞前面的FOR SOME(值)放在C的前面。 (ETC其他運營商。)

因此,考慮

-- rows where product [id_product] is supplied by [id_supplier] ... 
ps_product(id_product, id_supplier, ...) 
-- rows where carrier [id_carrier] has reference [id_reference] ... 
ps_carrier(id_carrier, id_reference, ....) 

我們寫

ps_product s 
JOIN ... 
ON s.id_product = ... 
... 
JOIN ps_carrier c 
ON ... = id_carrier 
WHERE ... 

讓行,其中

product [p.id_product] is supplied by [p.id_supplier] ... 
AND ... 
AND s.id_product = ... 
... 
AND carrier [c.id_carrier] has reference [c.id_reference] ... 
AND ... = id_carrier 
AND ... 

你需要知道你的表謂詞然後將表ON或WHERE條件連接在一起,以便生成p redicate用於你想要的行。

Is there any rule of thumb to construct SQL query from a human-readable description?