Mysql - Kibrit ve non-maçları katılın

2 Cevap php

This is related to my other question: http://stackoverflow.com/questions/2579249/managing-foreign-keys

Ben kibrit ve sigara-kibrit tablo katılmak için çalışıyorum.

Yani çıkarları bir listesini, kullanıcıların bir listesini ve kullanıcı çıkarları bir listesi var.

Ben kullanıcı sadece burada kullanıcı = x, (bu durumda olmalıdır null) çıkarı vardır ya da olmasın, tüm çıkarlarını dönmek sorgu istiyorum. Ben sorgu buna sahip olsun veya olmasın yerine bütün menfaatlerinin kullanıcının özel vardır onun sadece eşleşen çıkarlarını, çalışma olsun her zaman.

2 Cevap

SELECT  * 
FROM    interests i 
LEFT JOIN  userinterests ui ON i.interestID = ui.interestID 
LEFT JOIN  users u ON ui.userID = u.uiserID 
and u.userID = ?  

Eğer ana tbale Inteh hiçbir kayıt olması gereken bir tablo üzerinde bir yere koşul koyarsanız, bir soldan join bir iç katılmak dönüştürmek. Sadece zaman hiç (örneğin, u.userid boş olduğu) uyuşmuyor kayıtları ararken tek bir sol sağ tarafında katılmak için bir şey clasue nerede inthe bir durum olmalı

Tabii ki seçilecek alanları tanımlamak ve asla varken üretim kodu select * özellikle de kullanmanız gereken bir o ağ üzerinden tekrarlanan bilgi gönderir (feilds katılmak Inteh veriler tekrar edilir) ve bir kaynak israfı ve kötü olarak katılmak Çoklu nedenlerle uygulama prgramming.

Bunun yerine kullanmanız gerekir LEFT JOINS

Gibi bir şey

SELECT  *
FROM    interests i LEFT JOIN
        userinterests ui ON i.interestID = ui.interestID LEFT JOIN
        users u ON ui.userID = u.uiserID
WHERE userID = ? 

nerede arıyorsun kullanıcı kimliği.