J'ai deux tables table1 et table2. Je veux obtenir la distribution annuelle des sujets. J'ai fait une deuxième table pour les données de sujet. J'ai créé des tables aléatoires, table1 et table2.Requête MySql pour extraire des données de plusieurs tables
tabel1
id | year
1 | 2001
2 | 2003
3 | 2001
4 | 2002
5 | 2001
J'ai deuxième table avec Partagée "id"
table2
id | topic | subtopic
1 | sport | volley
1 | water | ok
1 | stock | apple
2 | stock | us
2 | stock | pine
3 | world | uk
3 | water | salt
4 | water | sweet
4 | world | ep
5 | sport | volley
5 | stock | apple
5 | stock | pine
catégories TOP pour le sujet sont disponibles (3 = 1,2,5), l'eau (3 = 1,3,4), sport (2 = 1,5), monde (2 = 2,4)
Et, disons que je ne veux que deux top "topic" données ainsi, mes données de sortie seraient
stock | water
----------------
2001 2 | 2
2002 0 | 1
2003 1 | 0
jusqu'à présent , J'ai réussi à le faire pour sujet individuel
SELECT table1.year AS YEAR, COUNT(DISTINCT table2.id) AS lcount
FROM table1, table2
WHERE topic = 'stock'
AND table1.id = table2.id
GROUP BY YEAR
Les sujets ne sont pas limités à seulement 4, il peut y avoir n-sujets différents. Donc, n-différents sujets doivent être trouvés. J'ai besoin de choisir le top 2 d'eux.
Et le code que vous avez essayé jusqu'à présent est? .. – dbf
Cela ressemble à un travail pour les clauses group by et having. vous devriez regarder dans ceux-ci. – usumoio
MySQL ne dispose pas d'un opérateur de pivot intégré, vous ne pouvez donc pas créer de tableau croisé dynamique à moins de connaître au préalable les colonnes que vous souhaitez. – Barmar