簡體   English   中英

我應該在這里使用哪種JOIN?

[英]What kind of JOIN should I use here?

我是MySql中JOINS的新手。

我有六個表:t1,t2,t3,t4,t5,t6。 我還有一個主表: main_table 共7張!

所有表的第一列稱為classified_id

如果用戶搜索“ cars”,則主表將匹配表t1(即cars表)中的所有內容,其中分類表id在兩個表中都相同。

所以:

   SELECT * FROM main_table, t1 WHERE main_table.classified_id=t1.classified_id

盡管我不確定這是否是加入此活動的方式,但它的效果很好。 在我看來,性能是一個問題!

但是,這是我的問題。 每當搜索所有分類時 ,我就需要將main_table.classified_id與其他表的classified_id main_table.classified_id列進行匹配,並獲取其中的所有分類。

該查詢應如何組成?

    SELECT * FROM main_table, t1, t2, t3, t4, t5, t6 // I have this so far which is not much!

如果您需要更多輸入,請詢問,我將更新此問題。

謝謝

編輯:表設置:

     main_table:              t1:
     ID(PK)                   ID (PK)
     classified_id -> 25      classified_id     ->   25
     category  -> CARS        year     ->    1997

如果該行將存在於所有表中(即每個表都有一個特定的classified_id的行),則可以使用內部聯接:

SELECT 
   m.classified_id
   ,m.category
   ,t1.year
   ,........
FROM 
   main_table m
   INNER JOIN t1 ON m.classified_id = t1.classified_id
   INNER JOIN t2 ON m.classified_id = t2.classified_id
   INNER JOIN t3 ON m.classified_id = t3.classified_id
   INNER JOIN t4 ON m.classified_id = t4.classified_id
   INNER JOIN t5 ON m.classified_id = t5.classified_id
   INNER JOIN t6 ON m.classified_id = t6.classified_id

如果行不在每個表中,那么您將使用LEFT JOINS以便不刪除行

采用:

   SELECT mt.*,
          t1.*,
          t2.*,
          t3.*,
          t4.*,
          t5.*,
          t6.*
     FROM MAIN_TABLE mt
LEFT JOIN TABLE_1 t1 ON t1.classified_id = mt.classified_id
LEFT JOIN TABLE_2 t2 ON t2.classified_id = mt.classified_id
LEFT JOIN TABLE_3 t3 ON t3.classified_id = mt.classified_id
LEFT JOIN TABLE_4 t4 ON t4.classified_id = mt.classified_id
LEFT JOIN TABLE_5 t5 ON t5.classified_id = mt.classified_id
LEFT JOIN TABLE_6 t6 ON t6.classified_id = mt.classified_id

我之所以使用LEFT JOIN是因為如果使用JOIN ,則將省略至少在t1 / 2/3/4/5/6表之一中沒有輔助記錄的記錄。 您可能會發現此鏈接有助於理解JOIN

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM