2013-04-25 169 views
0

我有我想要使用MySQL的SQL查詢來加入以下的OFBiz表:多表連接和查詢

  1. USER_LOGIN
  2. PERSON
  3. PARTY_CONTACT_MECH
  4. CONTACT_MECH
  5. TELECOM_NUMBER
  6. POSTAL_ADDRESS
  7. PARTY

USER_LOGIN, PERSONPARTY_CONTACT_MECH都含有外鍵"PARTY_ID",在PARTY引用表中的主鍵"PARTY_ID"

PARTY_CONTACT_MECH, TELECOM_NUMBERPOSTAL_ADDRESS都有外鍵"CONTACT_MECH_ID"引用的表CONTACT_MECH主鍵"PARTY_ID"

由於PARTY_CONTACT_MECH還涉及所述第一組上"PARTY_ID"上面列出的表的,並且還與第二組表上"CONTACT_MECH_ID",兩組或相當的所有表,因此可以在這兩個鍵"PARTY_ID""CONTACT_MECH_ID" JOINED 。

我的問題是:

  • 如何加入所有這些表查詢以下字段:

PARTY.PARTY_ID, 
USER_LOGIN.USER_LOGIN_ID, 
PERSON.FIRST_NAME, 
CONTACT_MECH.CONTACT_MECH_ID, 
POSTAL_ADDRESS.CITY, 
TELECOM_NUMBER.CONTACT_NUMBER. 
+2

你可以用你的數據庫模式做一個[SQLFiddle](http://sqlfiddle.com/)嗎? – 2013-04-25 16:32:42

+0

或只是一點點的格式化... – Kermit 2013-04-25 16:36:35

+0

既然你知道你有加入他們的鑰匙,什麼阻止你寫查詢? – 2013-04-25 16:41:45

回答

0

你想加入的所有表與他們的主鍵來調用其他表的外鍵。外鍵實質上是其他表的主鍵。這樣可以使用外鍵而不是將多餘的列添加到表中。

在您的某些表格上,您想加入多個值。有了這個,你只需要讓你的JOIN ON table1.var1 = table2.var2 AND table1.var1 = table3.var3,反之亦然。

你有很多的表,所以我會盡我可以:

SELECT 
    PARTY.PARTY_ID 
    , USER_LOGIN.USER_LOGIN_ID 
    , PERSON.FIRST_NAME 
    , CONTACT_MECH.CONTACT_MECH_ID 
    , POSTAL_ADDRESS.CITY 
    , TELECOM_NUMBER.CONTACT_NUMBER 
FROM `PARTY` 
    JOIN `USER_LOGIN` 
    ON PARTY.PARTY_ID = USER_LOGIN.PARTY_ID 
    JOIN `PERSON` 
    ON PARTY.PARTY_ID = PERSON.PARTY_ID 
    JOIN `PARTY_CONTACT_MECH` 
    ON PARTY.PARTY_ID = PARTY_CONTACT_MECH.PARTY_ID AND CONTACT_MECH.PARTY_ID = PARTY_CONTACT_MECH.CONTACT_MECH_ID 
    JOIN `TELECOM_NUMBER` 
    ON CONTACT_MECH.PARTY_ID = TELECOM_NUMBER.CONTACT_MECH_ID 
    JOIN `POSTAL_ADDRESS` 
    ON CONTACT_MECH.PARTY_ID = POSTAL_ADDRESS.CONTACT_MECH_ID 

就像我說的,這是非常難以跟上所有的表和列時不可見他們,但希望加入聲明可以幫助你看到如何去做。

+0

這將不起作用,如果tom,dick和harry whent參加聚會,那麼user_login和person表將無法判斷哪個登錄名隨同哪個人。 OP需要提供更多信息。 – Hogan 2013-04-25 18:17:11