j'ai défini la requête suivante:Pourquoi quelque chose comme select ne compte pas ((sélectionnez * chez les producteurs)) auprès des producteurs; travail?
select count((select * from producers)) from producers;
En supposant une table producers
avec 3 colonnes (A, B et C) et 2 rangs:
A B C
-----
0 1 2
3 4 5
je vous attendez la sortie suivante:
2
2
Cela ne fonctionne pas. Alors que la requête elle-même est fondamentalement inutile (même si cela fonctionnait, cela ne donnerait aucun résultat utile), j'aimerais essayer de comprendre pourquoi cela ne fonctionne pas.
(select * from producers)
Cela donne une liste de lignes avec des informations sur tous les attributs sur la table producers
.
select count((select * from producers)) from producers;
celui-ci pour chaque ligne sur producers,
montrent le nombre 2
(le nombre d'éléments dans producers
).
Pourquoi ça ne marche pas? Limitation SQL? Y a-t-il quelque chose qui ne va pas dans la logique que je suis ici?
Merci
Ce n'est pas une limitation. C'est une logique de fonction. La fonction 'COUNT()' accepte une valeur. – zerkms
Mais une valeur de ce "type"? Il doit accepter quelque chose en tant que tableau? –
@devoured elysium: où avez-vous vu 'array' dans votre requête? C'est juste un ensemble d'enregistrements. Et 'COUNT' attend une valeur scalaire. – zerkms