Yalnızca bir yinelenen göstermek nasıl?

1 Cevap php

Bu mysql not in or value=0?, bu sorunun bir uzantısı tür

Ben iki veritabanları bir Widget bilgi var ve diğer modülüne göre bu widget düzeni var. Sayfada ben böyle Başlık, İçerik, Kenar Çubuğu ve Altbilgi olarak bu widget koymak listeleri var. Kullanılmayan bir widget bir listesi de vardır. Ben sorun yaşıyorum nerede olduğunu.

İşte ben kullanıyorum mysql:

SELECT *
FROM widgets AS w
    LEFT JOIN widget_layouts AS wl
        ON w.id = wl.widget_id
WHERE wl.widget_id IS NULL
    OR wl.module_id <> '2'

Bu 2 module_id yok widget görüntüler. Başka listesine widget'lar birini koyarsanız o da başka bir widget kullanılıyor çünkü hala kullanılmamış Widget listesinde görünecektir yüzden.

İşte widget_layouts bir tablo:

|Module_id | Widget_id | Position | Weight|
-------------------------------------------
|2         |3          |1         |0      |
|1         |9          |3         |3      |
|1         |8          |3         |2      |
|1         |3          |2         |1      |

Yani burada soru şudur:

Nasıl modül 2 tarafından kullanılmayan veya yok widget listesi görüntülerim?

EDIT:

Ben yapmaya çalışıyorum ne kadar temizlemek için denemek için gidiyorum. Ben modül 2 tarafından kullanılan değil listesi ve widget değil ama modül 2 tarafından kullanılıyor ise o widget'ı görüntü yok widget göstermek için bir listesini istiyorum.

Ben içerik ve mevcut widget'lar görüntüler biri için iki liste tane var. Yani içerik listesinin içine widget listesinden widget'ı 3 sürükleyin. Sonra bir tarayıcı yenileme görüntülenen iki Widget 3, içerik listesinde bir ve mevcut listede bir vardır.

Peki nasıl veri tabanında olmayan ve Widget modülü 2 ile kullanılması durumunda mevcut listede görünmüyor widget'lar gösterebilirim?

1 Cevap

Sen SQL ile aynı değerler ile grup sütunlar yapabilirsiniz:

SELECT widget_id
FROM widgets AS w
    LEFT JOIN widget_layouts AS wl
        ON w.id = wl.widget_id
WHERE wl.widget_id IS NULL
    OR wl.module_id <> '2'
    GROUP BY widget_id