est-il possible de fusionner les deux requêtes suivantes et d'avoir également une valeur par défaut Remarque: lorsque l'état n'est pas égal à 1, il n'y a pas d'entrée pour cela dans le tableau2. Donc, dans le tableau deux, nous n'avons que des entrées en ligne. P> je veux que la sortie finale soit quelque chose comme p> hors connexion code> pour Statut code> quand il n'a pas d'entrée pour correspondre? Exemple: h3>
deuxième requête: h3>
-------------------------------------------
Objects | Objects_count | Status
-------------------------------------------
Unitied_states | 2 | Online
Germany | 2 | Offline
Turkey | 1 | Online
Kuwait | 2 | Offline
3 Réponses :
Essayez les éléments suivants à l'aide de Joindre de gauche code> Table1 et Table2 sur Objets CODE>. select
t1.Objects,
coalesce(COUNT (t1.*), 0) as Objects_count,
case
when t2.status = 1 then 'Online'
else 'Offline'
end as Status
from table1 t1
left join table2 t2
on t1.Objects = t2.Objects
GROUP BY
Objects,
case
when t2.status = 1 then 'Online'
else 'Offline'
end
Oui, c'est possible, en faisant un joint externe Je suppose également que vous voulez code> joindre code> sur les objets code>. sur les objets code> Colonne: P> SELECT
COALESCE( t1.Objects, t2.Objects ) AS Objects,
COALESCE( t1.Objects_Count, 0 ) AS Objects_Count,
-- t2.Status,
CASE t2.status WHEN 1 THEN 'Online' ELSE 'Offline' END AS status
FROM
(
SELECT
Objects,
COUNT(*) AS Objects_count
FROM
table1
GROUP BY
Objects
) AS t1
FULL OUTER JOIN
(
SELECT
Objects,
status
FROM
table2
) AS t2 ON t1.Objects = t2.Objects
@Utilisateur . . . Basé sur votre question Joindre complet CODE> est surkill et non nécessaire pour cette requête.
@Gordonlinoff Quand j'ai écrit ma réponse, je n'étais pas sûr si table1 code> et table2 code> représentait des sous-ensembles distincts de toutes les données ou non.
. . Le commentaire a été dirigé vers l'OP, pas chez vous. C'est une approche fine si nécessaire, mais rien dans la question ne suggère vraiment qu'il est nécessaire - il n'y a pas de 0 code> s dans les résultats des échantillons, par exemple.
J'utiliserais une sous-requête corrélée: Ceci renvoie toutes les lignes de alternativement, si < Code> Table2 Code> n'a pas de lignes en double, vous pouvez utiliser un simple joindre Table1 code> avec l'état. p> rejoindre code> et agrégation: p>
Mise à jour ma question avec les jointures de gauche. Je veux tester votre requête, mais je ne suis pas sûr comment utiliser des alias lorsqu'il y a d'autres jointures de gauche. Pouvez-vous mettre à jour votre réponse?
@utilisateur . . . (1) Ne mettez pas à jour une question après avoir reçu une réponse, en particulier d'une manière qui invalide les réponses. Qui attire les bowvotes sur cette réponse. (2) Vous pouvez avoir Syntaxicalement Mettez rejoindre code> dans la réponse, mais le où la clause CODE> le transforme simplement en une jointure intérieure. Vous devriez probablement demander une nouvelle question avec des données d'échantillonnage appropriées, des résultats souhaités et des explications.
Ok, je reviendrai la question à son état d'origine.
Pouvez-vous mettre à jour votre réponse pour adapter quelques jointures de gauche, puis alias? Je pense qu'une nouvelle question demandant comment le faire ressembler à votre requête pourrait apporter des bowvotes.
Veuillez étiqueter votre moteur SQL et fournir des échantillons de données sous forme tabulaire.
Est-ce que cela répond à votre question? Quelle est la différence entre "Join interne" et " Rejoindre "?
L'expression code> de votre deuxième requête est redondante car le
où la clause code> assure que tous les valeurs code> Status code> seront"en ligne" code>. S'il vous plaît expliquer ce que votre deuxième requête est réellement destinée à accomplir.Votre deuxième requête est invalide: la valeur
Statut code> n'est pas incluse dans la clause code> (code> code> ni partie d'une opération globale. Pourquoi votre deuxième requête a-t-elle un groupeen clause code> mais n'effectue aucune opération d'agrégation du tout?Quelles sont les colonnes clés dans
table1 code> ettable2 code>?Objets CODE> est la cléTableau1 code> etTable2 code>. BTW Votre solution a fonctionné. Merci