0
votes

plusieurs sous-requêtes, comptent plus de fils mais avec une condition


Salut! Cela fonctionne bien, mais j'ai besoin de compter plus de fils, mais d'une condition xxx

J'essaye, mais recevez l'erreur suivante ...

Erreur SQL: l'opérande doit contenir 1 colonne (s) xxx

s'il vous plaît, et merci

éditer: cela fait exactement je veux, mais je pense que ce n'est pas la bonne façon de faire (J'ai changé les noms désolé, mais il a l'air mieux) xxx xxx

essentiellement combien d'enfants sont et combien sont de chaque type xd


2 commentaires

Veuillez indiquer quelques échantillons de données et vos résultats souhaités.


En outre, votre structure de table serait utile. Est tabl différent de tbl1 ?


3 Réponses :


0
votes

mySQL 8 a les fonctions de la fenêtre. Par conséquent, vous pouvez écrire votre requête en elle comme ceci:

SELECT t1.*, COUNT(*) OVER(PARTITION BY t1.id ORDER BY t1.id) AS sons,
       COUNT(CASE WHEN t1.type = 3 THEN t1.type END) OVER (PARTITION BY t1.id ORDER BY t1.id) AS Johnny
FROM tabl t1
WHERE t1.sons = ?;    


0 commentaires

0
votes

Vous ne pouvez pas définir plusieurs colonnes à une colonne.

(select count(*) from tabl t2 where t2.tabl=t1.id), (select count(*) from tbl1 t3 where t3.type=3)


0 commentaires

0
votes

Est-ce ce que vous recherchez?

select t.*,
       count(*) over (partition by id) as sons,
       sum(type = 3) over (partition by id) as johnny
from tabl t
having sons = ?;


0 commentaires