6
votes

Comment récupérer la même colonne deux fois avec des conditions différentes dans la même table?

Ceci est ma table: xxx

Il y a 4 colonnes anganbadi_id, nourriture, année, année et je veux comparer aliment colonne deux fois en fonction de deux valeurs de mois de différentes mois.

par exemple Si je sélectionne mois = 4 pour la première colonne de la première nourriture (Food-1) et le mois = 10 pour la colonne Second Alimentaire (Food-2), il devrait être comme suit :: xxx p> Quand j'essaye ce code xxx

Il montre les résultats suivants :: xxx

Aidez-moi dès que s'il vous plaît aussi possible ....


1 commentaires

Les gars de foin, pas sûr de savoir pourquoi vous étiez si rapide de marquer cette question, je pense qu'il y a 3 mauvaises réponses IMHO, mais leur gars a clairement l'anglais langue seconde (ou inférieure) et commence. Oui sa demande auparavant.


5 Réponses :


1
votes

La clé ici est la jointure extérieure complète sur ID, les conditions de chaque sous-requête peuvent être toutes des jointures extérieures complètes vous donneront une ligne dans laquelle les identifiaires correspondent et nulles dans les colonnes adverses où elles ne font pas. Si vous voulez tous les résultats, même là où la nourriture ne remplit aucune condition dans les deux mois, alors faites une joindre à gauche dans l'une des sous-requêtes avec un identifiant Select à partir de AllfoodStable

SELECT Food1, Food2, ID
FROM (
  SELECT Food1, ID
  FROM MyTable
  WHERE Month = 4
) Con1
FULL OUTER JOIN (
  SELECT Food2, ID
  FROM MyTable
  WHERE Month = 10
) Con2
ON Con1.ID = Con2.ID


0 commentaires

0
votes
SELECT DISTINCT Anganbadi_ID
,(SELECT     Food
FROM          Anganbadi AS Anganbadi_2
WHERE      (Anganbadi_1.Anganbadi_ID = Anganbadi_ID) AND (Month = 4)) AS 'Food(4)'
,(SELECT     Food
FROM          Anganbadi AS Anganbadi_2
WHERE      (Anganbadi_1.Anganbadi_ID = Anganbadi_ID) AND (Month = 10)) AS 'Food(10)'

FROM         Anganbadi AS Anganbadi_1
SQL-Fiddle

0 commentaires

1
votes
SELECT Anganbadi_ID, Food as food1, null as Food2
where Month = 4

UNION ALL

SELECT Anganbadi_ID, null as food1, food as Food2
where Month = 10

1 commentaires

Pourquoi le vote en bas? Cela fonctionne parfaitement pour ce que le gars a demandé!



12
votes
SELECT DISTINCT Anganbadi_ID,

(SELECT Food 
 FROM Anganbadi 
 WHERE      (Anganbadi_ID = A.Anganbadi_ID) 
    AND (Month = 4)) AS Food1,

(SELECT Food 
 FROM Anganbadi 
 WHERE      (Anganbadi_ID = A.Anganbadi_ID) 
    AND (Month = 10)) AS Food2

FROM Anganbadi AS A 
WHERE A.Month = 10 OR A.Month = 4
SQL Fiddle

1 commentaires

Son spectacle «SubQuery revient-il plus d'une rangée», pourquoi?



0
votes
SELECT 
Food
DISTINCT Anganbadi_ID,

(SELECT Food 
 FROM Anganbadi 
 WHERE      (Anganbadi_ID = A.Anganbadi_ID) 
    AND (Month = 4)) AS Food1,

FROM Anganbadi AS A 
WHERE A.Month = 10 OR A.Month = 4

1 commentaires

Tandis que cet extrait de code peut résoudre la question, y compris une explication aide vraiment à améliorer la qualité de votre message. N'oubliez pas que vous répondez à la question des lecteurs à l'avenir, et ces personnes pourraient ne pas connaître les raisons de votre suggestion de code.