2009-12-21 11 views
0

Base de données un est appelé widgets, il a "id" et "titre". Base de données deux est appelé widget-mises en page et il a "module-id", "widget-id", "position" et "poids". Ce que j'essaie de faire est de vérifier si widgets.id existe dans widget-layout.widget-id et si c'est le cas, alors widget-layouts.position = 0. Je veux aussi obtenir les valeurs de widgets qui n'existent pas dans les mises en page de widget.mysql pas dans ou valeur = 0?

Voici la requête mysql avec laquelle j'ai travaillé.

SELECT * FROM widgets, widgets-layouts OÙ (widge-layouts.position = '0' ET widgets.id = widget de-layouts.widget-id) OU widgets.id NOT IN (SELECT * FROM widget-layouts)

Avec cette requête, je reçois une liste énorme de widgets où chaque widget est affiché à plusieurs reprises.

Des idées à ce sujet?

Répondre

0
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.position = '0'  
+0

Cela fonctionne très bien, merci pour l'aide. – WAC0020

0
SELECT * FROM widgets LEFT JOIN widget-layouts on widget-id = id WHERE position = 0 

doit montrer à ceux qui existent et ont position = 0

SELECT * FROM widgets RIGHT JOIN widget-layouts on id = widget-id where id is NULL 

devrait montrer à ceux qui existent dans widget-layouts ne