Tür JOIN Ben burada ne kullanmalıyım?

2 Cevap php

Ben MySql KATILDI yeniyim.

I have six tables: t1, t2, t3, t4, t5, t6. And I also have one main table: main_table. TOTAL 7 TABLES!

TÜM tablo, ilk sütun denir classified_id.

Kullanıcı "arabalar" için arama yaparsa classified_id her iki tablonun aynı olduğu daha sonra ana tablo (araba tablo) tablo t1 her şeyi maç olacak.

Yani:

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

Bunu burada katılmak için bir yol olduğundan emin değilim ancak bu, gayet iyi çalışıyor. Performans benim durumumda bir konudur!

However, here is my problem. Whenever ALL CLASSIFIEDS are searched, then I need to match the main_table.classified_id to the other tables classified_id column and get every classified there is.

Bu nasıl sorgu kadar yapılmalıdır?

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

Eğer daha fazla girdi ihtiyacınız varsa sadece isteyin ve ben bu Q güncelleyeceğiz

Teşekkürler

EDIT: Table setup:

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

2 Cevap

Satır tüm tabloları (yani her tablo, belirli bir classified_id için bir satır vardır) var olur, o zaman bir iç birleşim kullanırsınız:

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

Satır, her tabloda yoksa, o zaman SOL satırlar düştü değil böylece KATILDI kullanmak istiyorum

Kullanın:

   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

Kayıtlar bu t1/2/3/4/5/6 en az birinde bir destek kaydı yoktu ihmal edilebilir - JOIN kullanıldı, çünkü eğer I-LEFT JOIN s el tablolar. Sen bulabilirsiniz this link helpful for understanding JOINs.