2015-04-24 1 views
0

Eh bien, si j'essaie de compter le total de lignes d'une vue commeselect count() dans une vue

select count(*) from my_view v 

Il revient toujours 1 sachant que le point de vue a beaucoup de lignes. Je ne trouve aucune documentation à ce sujet dans les documents mysql. Si ce n'est pas possible, existe-t-il une solution de contournement pour réaliser cette tâche? Je vous remercie.

Modifier, le point de vue n'a pas de clé primaire, alors j'ai aussi essayé quelque chose comme ça avec le même résultat de 1:

select count(v.id_customer) from my_view v 

Voici un exemple:

mysql> select * from plans limit 5; 
+----------------+----------+---------+---------+------------+---------------------+---------------------+----------------+--------------+ 
| medical_center | customer | invoice | product | recurrence | placed    | due_date   | elapsed_months | elapsed_days | 
+----------------+----------+---------+---------+------------+---------------------+---------------------+----------------+--------------+ 
|    1 |  1 |  1 |  2 |   6 | 2015-01-18 17:16:23 | 2015-07-18 17:16:23 |    2 |   89 | 
|    1 |  1 |  3 |  2 |   6 | 2015-04-18 17:16:23 | 2015-10-18 17:16:23 |    5 |   0 | 
|    1 |  1 |  4 |  2 |   6 | 2015-04-18 17:16:23 | 2015-10-18 17:16:23 |    5 |   0 | 
|    1 |  1 |  5 |  2 |   6 | 2015-04-18 17:16:23 | 2015-10-18 17:16:23 |    5 |   0 | 
|    2 |  1 |  6 |  2 |   6 | 2015-04-18 17:16:23 | 2015-10-18 17:16:23 |    5 |   0 | 
+----------------+----------+---------+---------+------------+---------------------+---------------------+----------------+--------------+ 
5 rows in set (0.00 sec) 

Maintenant, essayer de compter:

mysql> select count(*) from plans p; 
+----------+ 
| count(*) | 
+----------+ 
|  1 | 
+----------+ 
+0

Utilisez-vous un code de niveau d'application pour effectuer la requête ci-dessus ou vous essayez directement sur mysql? –

+0

directement à partir d'une console mysql. Renvoyez toujours '1' – manix

+0

Pourriez-vous partager le résultat dans la question? Copiez simplement le résultat entier dans la question que vous obtenez dans mysql cli. –

Répondre

1

i essayez lutôt comme celui-ci

select count(table_id) as countno from my_view 

vous obtiendrez la valeur correcte compte

+0

En quoi est-il différent de l'OP? pourquoi pensez-vous que cela donnera un résultat correct? –

+0

il veut juste compter le nombre total de lignes de la table my_view droite ...? par ceci il peut réaliser cela – Neelesh

+0

Ainsi comment votre question est différente de ce qu'il a 'select count (*) from my_view v' devrait faire la même chose. –

1

Essayez ceci:

SELECT * , (select count(*) FROM my_view) AS Cnt FROM my_view 

count(*) est une fonction globale qui aurait besoin d'un groupe par clause au travail. Mais ce qui précède est une solution de contournement pour vous aider maintenant.

2

Si votre vue calcule le nombre, par exemple

create view my_view as 
select count(*) as count from my_table 

puis juste:

select * from my_view 

La vue ne renvoie qu'une seule ligne (le nombre rssult), donc si vous sélectionnez le nombre d'avis lignes, bien sûr, il sera 1.