Tablolardan biri hiçbir veri yokken MySQL, PHP ile, JOIN?

3 Cevap php

Katıldığınız tablolardan biri içinde kullanıcı için herhangi bir veri yoksa nasıl bir katılmak deyimi ile anlaşma yok.

Örneğin:

-User_1 tüm tablolar listelenir.

-User_2 table_1, table_2 ve table_3 değil table_4 olarak listelenir.

User_2 table_4 olmadığından aşağıdaki sorgu başarısız olur.

$query = "SELECT table_1.username, table_2.car, table_3.bike, table_4.plane
    FROM table_1
    JOIN table_2
        ON table_1.username=table_2.username
    JOIN table_3
        ON table_1.username=table_3.username
    JOIN table_4
        ON table_1.username=table_4.username
    WHERE table_1.username = 'user_2'";

3 Cevap

Genellikle böyle bir durumda, bir LEFT JOIN bakmak olacaktır.

Gibi bir şey

SELECT table_1.username, table_2.car, table_3.bike, table_4.plane 
    FROM table_1 
    JOIN table_2 
        ON table_1.username=table_2.username 
    JOIN table_3 
        ON table_1.username=table_3.username 
    LEFT JOIN table_4 
        ON table_1.username=table_4.username 
    WHERE table_1.username = 'user_2'

Bu da daha sonra diğer tabloları herhangi bir nedenle bile bu daha yararlı olabileceğini durumda olabilir

SELECT table_1.username, table_2.car, table_3.bike, table_4.plane 
    FROM table_1 
    LEFT JOIN table_2 
        ON table_1.username=table_2.username 
    LEFT JOIN table_3 
        ON table_1.username=table_3.username 
    LEFT JOIN table_4 
        ON table_1.username=table_4.username 
    WHERE table_1.username = 'user_2'

JOIN bir dış içine bakmak. Bir tarafta kayıtları verir, ancak diğer isteğe bağlı (sağ / dış dış sol). Hiçbir kayıt "diğer" masada bulunan varsa, onun sütun, sonuç kümesinde bu konuda çok dikkatli olmak null neden olacaktır

I Jeff's article on JOINs size yardımcı gerektiğini düşünüyorum.