Recherche approximative sur un nom | [06-01-2002] |
Posté par pp11
Pour afficher les noms qui "sonnent" comme votre recherche, SOUNDEX est très utile :
SELECT nom FROM table_noms WHERE soundex(nom) LIKE soundex('".$recherche_nom."') |
|
Exemple : $recherche_nom = "Dupont"
Trouve : $row['nom'] = "Dupond"
|
Effacer les enregistrements vieux de plus d'une demi-heure | [09-12-2001] |
Posté par Samuel Thery
Je me suis pris la tête avec la doc MySQL, alors autant en faire profiter tout le monde !
le but étant d'effacer toutes les lignes d'une table MySQL qui sont vieilles de plus d'une demi-heure (dans mon cas, la table d'un caddie)
DELETE FROM caddie WHERE date < DATE_ADD(NOW(),INTERVAL -30 MINUTE); |
|
caddie est le nom de ma table et date le nom du champ date (type DATETIME).
|
SELECT SUM() | [17-11-2001] |
Posté par denis
Cette fonction est d'une puissance fabuleuse et évite beaucoup de lignes de codes en PHP et des requêtes à n'en plus finir surtout si la BDD comporte un grand nombre d'entrées. Voici par exemple :
SELECT SUM(qte * prix) AS total FROM ventes WHERE mois='janvier' GROUP BY produit |
|
Ceci permet de connaître la somme des ventes de chaque produit pour le mois de Janvier, et tout ça tient en une ligne. Plus fort encore :
SELECT SUM(qte * prix) AS total, SUM(total * 1.196) AS totalTTC FROM ventes WHERE mois='janvier' GROUP BY produit |
|
Idem que l'exemple précédent mais en plus on extrait le total TTC. Et on peut compliquer cette fonction à l'infini et même effectuer des sommes sur des champs de tables différentes. La difficulté étant de récupérer les alias qui sont dans les exemples précédents : total et totalTTC.
Ce qui donne le code suivant :
<?$query =" SELECT SUM(qte * prix) AS total, SUM(total * 1.196) AS totalTTC FROM ventes WHERE mois='janvier' GROUP BY 'produit' "; $bd_result = mysql_query($query); $ii=0; while ($row = mysql_fetch_array($bd_result)) { $ii++; $total[$ii]= $row['total']; $totalTTC[$ii] = $row['totalTTC']; } ?> |
|
|
MySQL et les expressions régulières | [15-11-2000] |
Posté par Frédéric Bouchery
MySQL sait aussi utiliser les expressions régulières. La requête ci-dessous recherche tous les enregistrements dont l'email comprend 'pierre', 'paul', ou 'jacques'.
SELECT * FROM newsletter WHERE email REGEXP '(pierre|paul|jacques);'
|
Afficher les résultats d'une requête par ordre alphabétique | [12-10-2000] |
Posté par Luxien
Pour afficher les résultats d'une requête par ordre alphabétique c'est très simple (mais que j'ai mis 2 semaines pour trouver, c'est pour cela que je propose cette astuce) :
$sql = "SELECT * FROM nomtab ORDER BY nomchant ASC LIMIT $debut,$nb";
Nb: le LIMIT est utilisé pour afficher les résultats sur plusieurs pages.
|
Contourner les requêtes imbriquées | [10-05-2000] |
MySQL ne proposant pas les requêtes imbriquées (pour les versions < 3.24), voici 2 exemples pour les contourner.
------------------------------------------ SELECT * FROM table1 WHERE id IN (SELECT id FROM table2); Devient :
SELECT table1.* FROM table1,table2 WHERE table1.id=table2.id; ------------------------------------------ SELECT * FROM table1 WHERE id NOT IN (SELECT id FROM table2);Devient :
SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id WHERE table2.id IS NULL; ------------------------------------------
|