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;
------------------------------------------
|