2010-03-09 4 views
0

Je suis à la recherche d'aide avec ma recherche ci-dessous. qui ne retourne jamais rien pour végétarien ... Est-ce que ma déclaration WHERE est écrite comme valide?MySQL, SQL Select Statement, Où avec OU ... Qu'est-ce qui ne va pas?

SELECT * 
FROM newsfeed INNER JOIN newsfeedaction ON newsfeed.newsfeedactionid = newsfeedaction.newsFeedActionID 
    INNER JOIN person ON newsfeed.personID = person.personID 
    LEFT OUTER JOIN food ON newsfeed.foodID = food.foodID 
    LEFT OUTER JOIN veggie ON newsfeed.veggieID = veggie.veggieID 
WHERE 
    (
    newsfeed.veggieID IS NOT NULL 
    AND veggie.deleted = 'N' 
) 
OR 
    (
    newsfeed.foodID IS NOT NULL 
    AND food.deleted = 'N') 
+0

veuillez remplir votre demande ... Je pense que c'est une erreur de copier-coller – hallie

+0

désolé à ce sujet .. s'il vous plaît aider :) – AnApprentice

+0

Nous avons besoin de voir des exemples de données pour voir pourquoi les enregistrements que vous attendez ne se présentent pas. –

Répondre

-1

Une Union entre les deux ensembles de données a fait le tour et je l'ai lu en ligne UNION entre deux selects est plus rapide qu'un où avec 2 groupes

1

La clause where est incomplète. Le deuxième ensemble de conditions doit être complété.

+0

ok c'était une mauvaise pâte de mon côté. Je suis en train de mettre à jour ce qui précède car ce n'est pas le problème – AnApprentice

+0

Réécrivez la requête fournie par OMG Ponies et vérifiez également si des données remplissent la condition. Comme les données ne sont pas fournies, elles ne peuvent pas être vérifiées par d'autres. – Kangkan

1

À moins que le VEGGIE.veggieid peut être nul (également pour FOOD.foodid), utilisez:

SELECT * 
    FROM NEWSFEED nf 
    JOIN NEWSFEEDACTION nfa ON nfa.newfeedactionid = nf.newsfeedactionid 
    JOIN PERSON p ON p.personid = nf.personid 
    JOIN FOOD f ON f.foodid = nf.foodid 
      AND f.deleted = 'N' 
    JOIN VEGGIE v ON v.veggieid = nf.veggieid 
       AND v.deleted = 'N' 

La requête est par ailleurs correcte, mais exige que NEWSFEED dossiers doivent avoir des documents d'appui dans les deux tables VEGGIE et FOOD.

Questions connexes