J'ai une table que j'ai besoin de rejoindre avec elle-même et trouver les éléments manquants et je suis coincé. Peut-être que c'est juste un problème d'inexpérience, mais il me semble que je ne peux penser qu'en termes de boucle pour accomplir ce que je veux.Éviter une boucle for dans SQL
essentiellement la table est la suivante:
packageID Server
1 baseline
2 baseline
3 baseline
1 server1
3 server1
2 server2
3 server2
Ce que j'espère accomplir est de trouver ce que les paquets sont absents de chaque serveur. Je peux obtenir ceci sur un serveur par chaque serveur comme ceci:
SELECT base.*, ISNULL(dp.server,'server1') as Server
FROM (SELECT DISTINCT packageID FROM DB1
WHERE server = 'baseline') base
LEFT OUTER JOIN
(SELECT packageID, server FROM DB1
WHERE server = 'server1') dp
WHERE dp.server IS NULL
Ce qui me donne ce que je veux sur une base de serveur individuel. Comment pourrais-je accomplir obtenir une liste de chaque paquet d'un serveur particulier est manquant de la ligne de base?
Comment connaître le nombre de serveurs? Vous n'avez pas besoin d'une table de serveurs? – pedromarce
Je pourrais obtenir une liste de serveurs dans une vue en obtenant un serveur distinct de cette liste si cela aiderait dans une solution? – Giled
Mon point est, et si un serveur n'a pas de paquets déployés? Ensuite, il n'apparaîtra pas du tout, ni dans la table ni dans la vue, mais vous aurez toujours besoin de savoir qu'ils sont manquants. – pedromarce