Tester la présence d'un certain enregistrement

Tester la présence d'un certain enregistrement - SQL/NoSQL - Programmation

Marsh Posté le 02-06-2010 à 19:45:10    

Bonjour,
 
Je souhaite savoir si un certain enregistrement existe sur une table.
 
Je connais 2 méthode mais elles ne me conviennent pas :


"SELECT champs FROM table WHERE condition"
 
Puis mysql_num_rows() du résultat


 
Ou


"SELECT COUNT(champ) as nbre FROM table WHERE condition"
 
Puis exploitation directe du résultat


 
Le problème, c'est que dans les deux cas, on check la totalité du contenu de la table pour retourner le nombre d'enregistrements.
Or ce que je veux, c'est savoir si un tel enregistrement existe. Une fois un premier enregistrement trouvé, on peut arrêter de chercher. Inutile de chercher plus.
 
Ya-t-il une méthode qui remplit parfaitement cette fonction ?
 
Merci d'avance  :hello:


Message édité par Pascal le nain le 02-06-2010 à 19:45:51
Reply

Marsh Posté le 02-06-2010 à 19:45:10   

Reply

Marsh Posté le 02-06-2010 à 21:52:22    

SELECT id FROM table WHERE condition LIMIT 1

 

si ta table ets bien conçue, il y ad es indexe, le SGBD ne parcourt donc pas la table mais juste l'indexe


Message édité par flo850 le 02-06-2010 à 21:52:48
Reply

Marsh Posté le 02-06-2010 à 21:58:17    

Oui j'ai pensé à cette solution.
Mais même avec un LIMIT, le SGBD renvoie la valeur de l'enregistrement.
Je cherche une fonction booléenne qui ne fait pas de travail inutile.
 
Si elle n'existe pas, tant pis, je ferai avec...

Message cité 1 fois
Message édité par Pascal le nain le 02-06-2010 à 21:58:43
Reply

Marsh Posté le 02-06-2010 à 22:07:14    

ça existe en MySQL ça ?
 

Code :
  1. IF EXISTS(SELECT machin FROM truc WHERE chose)... ?


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 02-06-2010 à 22:09:20    

Pascal le nain a écrit :

Oui j'ai pensé à cette solution.
Mais même avec un LIMIT, le SGBD renvoie la valeur de l'enregistrement.
Je cherche une fonction booléenne qui ne fait pas de travail inutile.
 
Si elle n'existe pas, tant pis, je ferai avec...


si tu fais un SELECT d'un seul champ , ça ne doit pas être bien lourd quand meme

Reply

Marsh Posté le 02-06-2010 à 22:13:57    

Harkonnen a écrit :

ça existe en MySQL ça ?
 

Code :
  1. IF EXISTS(SELECT machin FROM truc WHERE chose)... ?



 
Et ca renverrai quoi ?  :sarcastic:  
 

flo850 a écrit :


si tu fais un SELECT d'un seul champ , ça ne doit pas être bien lourd quand meme


 
Oui... mais c'est pabô  :whistle:

Reply

Marsh Posté le 02-06-2010 à 22:30:00    

essaye de faire un replace et compte le nombre champs modifié alors :o

Reply

Marsh Posté le 03-06-2010 à 09:20:16    

Pascal le nain a écrit :


 
Et ca renverrai quoi ?  :sarcastic:  
 

http://technet.microsoft.com/fr-fr [...] 88336.aspx


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 03-06-2010 à 11:08:25    

Sans vouloir enfoncer une porte ouverte, mais c'est un pas un peut trop tiré par es cheveux ?
 
C'est du SQL de base :

Code :
  1. select  * from ma_table where ma_colonne = ma_clef_primaire;


C'est bien ce qu'il faut écrire pour savoir si on a déjà un enregistrement dans la table. :??:
 
Et sauf si on veut faire un requête corrélée/imbriqué, si c'est pour savoir si on doit faire un insert ou un update on a pas le choix.
 
Alors on peut se limité à la colonne de clef_primaire ou a mettre une valeur bidon genre "1", mais bon... Fondamentalement pour le SGBD ça ne change pas grand chose.


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed