Requête MySQL un peu compliquée

7 réponses
AuteurMessage

midtownmad |
Membre

 

Inscrit le : 09/05/2005

# Le 13/08/2005 à 06:25

Salut,

J'aurais besoin d'un peu d'aide pour une requête MySQL.
Je sais que je peux le faire en plusieurs requêtes, mais autant optimiser .

En faite j'ai deux tables :

table1:

id : int auto increment
nom : varchar
champ1 : int


table2:
id : int auto increment
idcpt : int
telephone : varchar
champ2 : varchar


table2.idcpt correspond à table1.id

Je voudrais effectuer une sélection dans la table2 selon les critères suivant :
- table2.champ2 : contient "l," ds le texte
- table2.idcpt : seulement si table1.champ1 est > 0

Je sais pas si je suis très clair.

Merci,
midt.

midtownmad (dit gigi par ses amis)
http://www.macreators.comOuvrir dans une nouvelle fenetre

aKennedy |
Membre

Photo de aKennedy

Inscrit le : 09/05/2005

# Le 13/08/2005 à 08:54

"SELECT a.id, a.nom, a.champ1, b.champ2, b.idcpt FROM table1 a, table2 b WHERE a.id = b.idcpt AND b.champ2 LIKE'%l%' AND a.champ1 >0"

Non ?

Francis HeaulmeOuvrir dans une nouvelle fenetre , JFKOuvrir dans une nouvelle fenetre et autres joyeusetés.

erwinol | Erwin
Membre

Photo de erwinol

Inscrit le : 09/05/2005

# Le 13/08/2005 à 13:07

Ben oui c'est une requête toute bête ...

midtownmad | Ronan
Membre

 

Inscrit le : 09/05/2005

# Le 13/08/2005 à 15:17

Bah merde mdr, j'avais ds l'idée un truc bien compliqué ^o).

Merci les gars .

midtownmad (dit gigi par ses amis)
http://www.macreators.comOuvrir dans une nouvelle fenetre

midtownmad | Ronan
Membre

 

Inscrit le : 09/05/2005

# Le 13/08/2005 à 17:24

J'ai réussi à faire ce que je voulais grâce à votre aide, mais dans la suite de mon script, je me heurte à un nouveau pb de requête MySQL.

table:

id : int auto increment
idcpt : int
date : date
champ1 : float


Je voudrais récupérer dans la table une ligne dont la date est <= à aujourd'hui, pour chaque idcpt différent.
Ca me paraît super compliqué, j'ai beau regarder dans la doc MySQL, les DISTINCT... je comprends pas :/.

Merci,
midt.

midtownmad (dit gigi par ses amis)
http://www.macreators.comOuvrir dans une nouvelle fenetre

aKennedy |
Membre

Photo de aKennedy

Inscrit le : 09/05/2005

# Le 13/08/2005 à 17:34

"AND date <=NOW() GROUP BY idcpt"

Sauf erreur de ma part, toujours possible parce qu'avec les Group By et les distinct je fais toujours une connerie avant d'y arriver.

Francis HeaulmeOuvrir dans une nouvelle fenetre , JFKOuvrir dans une nouvelle fenetre et autres joyeusetés.

midtownmad | Ronan
Membre

 

Inscrit le : 09/05/2005

# Le 13/08/2005 à 17:49

J'ai essayé et en faite le champ1 retourne la première valeur de toute la liste, c'est à dire la valeur du champ1 pour la date la plus petite.

Alors que je voudrais qu'il me retourne la valeur du champ1 pour la date la plus grosse et l'id le plus gros ; j'ai fais un ORDER BY... mais ça change rien.

Edit :
Voila la requete que j'ai faite :

SELECT `id`, `idcpt`, `champ1` FROM `table` WHERE `date`<=NOW() AND (`idcpt`=1 OR `idcpt`=4 OR `idcpt`=5) GROUP BY `idcpt` ORDER BY `date` DESC, `id` DESC;

midtownmad (dit gigi par ses amis)
http://www.macreators.comOuvrir dans une nouvelle fenetre

midtownmad | Ronan
Membre

 

Inscrit le : 09/05/2005

# Le 18/08/2005 à 17:13

Pas de solution ?

midtownmad (dit gigi par ses amis)
http://www.macreators.comOuvrir dans une nouvelle fenetre

Répondre

Vous ne pouvez pas participer au forum, car votre inscription n'a pas été validée. Pour vous faire valider en tant que Membre, cliquez ici.

© MHN - Tous droits réservés | CNIL N°844440 | 18/05/2024 9:00:16 | Généré en 5.3ms | Contacts | Mentions légales |