2016-03-22 25 views
-1

ilişki tabloları: m:Sorgu birçok çoğa bir ilişki n bu tabloları var

1) NEW 
ID_NEW, TITLE_NEW, SUBTITLE_NEW, CONTENT_NEW, CREATED_NEW, IMAGE_NEW, USER_ID 

2) TAG 
ID_TAG, NAME_TAG 

3) NEW_has_TAG 
NEW_ID, TAG_ID 

Ben örneğin bir etiket, belirli bir etiket için arayan bir sorgu bulmak istiyoruz hangi futbol. katılır ile bu vb şeyler, yeni (ler), başlığın kimlikli bir liste, kuran Bu durumda aynı

cevap

1

Bu temel SQL geçerli: Aslında

SELECT 
    t.*, n.* 
FROM 
    tag t 
    LEFT JOIN new_has_tag nt ON t.id_tag = nt.id_tag 
    LEFT JOIN `new` n ON nt.new_id = n.id_new 
WHERE 
    t.name_tag = 'football' 

NEW SQL ayrılmış bir anahtar kelimedir Standart (MySQL de bu standardı takip eder), muhtemelen `new` adında bir tablo var ve new yerine backticks ile.

ANSI SQL mode etkinleştirilmişse, "new" da tanımlayıcı için geçerli bir ad olacaktır.

+1

Çifte alıntı işe yarayacak mı yoksa "yeni" nin etrafında tek bir geri çekmeye mi ihtiyacınız var? –

+0

ANSI SQL modu etkinleştirilmişse, on çift alıntı çalışır. Eklediğiniz için teşekkürler, çoğu zaman olduğu gibi, backticks için değiştirdim. –

+0

Çok teşekkür ederim! Tek tırnak işaretleri ve bunlar olmadan çalışır, en azından MySQL içinde :) – Kaaerreeene

İlgili konular