多表连接和查询

时间:2013-04-25 16:30:17

标签: mysql sql join

我想使用mySQL SQL查询加入以下OFBiz表:

  1. USER_LOGIN
  2. PERSON
  3. PARTY_CONTACT_MECH
  4. CONTACT_MECH
  5. TELECOM_NUMBER
  6. POSTAL_ADDRESS
  7. PARTY
  8. USER_LOGIN, PERSONPARTY_CONTACT_MECH都包含引用"PARTY_ID"表中主键"PARTY_ID"的外键PARTY

    PARTY_CONTACT_MECH, TELECOM_NUMBERPOSTAL_ADDRESS都具有引用表"CONTACT_MECH_ID"中主键"PARTY_ID"的外键CONTACT_MECH

    由于PARTY_CONTACT_MECH也与"PARTY_ID"上面列出的第一组表相关,并且与"CONTACT_MECH_ID"上的第二组表相关,因此两组或更确切地说是所有表因此,可以在这两个键"PARTY_ID""CONTACT_MECH_ID"上加入。

    我的问题是:

    • 如何加入所有这些表格以查询以下字段:

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

1 个答案:

答案 0 :(得分: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

就像我说的那样,当它们不可视化时很难跟上你所有的表和列,但希望join语句可以帮助你看到如何做到这一点。