probleme de doublons avec group by et left join en SQL

Petit nouveau ! | 2 Messages

10 mai 2019, 00:31

Bonjour !

J'essaie de faire une requête sql afin de voir mes prixLots ainsi que mes options et variantes pour chacun des lots.

Mais le problème est que parfois pour un même lot il peut y avoir differentes option et/ou variantes

J'ai donc fais ceci comme requête qui permet lorsque l'on tape dans une barre de recherche d'avoir les prix des lots avec les intitules des lots et aussi s'il y a des options et/ou variantes

Voici mon code :


include("connection.php");
$mc="";
if(isset($_POST['rechercher'])){
$mc=$_POST['rechercher'];
}
//$req="select * from client where nom like '%mc'";
//$rs=mysqli_query($req) or die(mysqli_error());

$queryPeopleAndNote = "SELECT distinct (V.idVariante) as IDDV, C.id AS IDD ,C.organisme,C.nom,C.adresse,C.start, C.end,C.etat, L.id,L.idLot as IDDL, L.variationPrix,L.dateExploitation,L.dateFinExploitation,L.dureeTotale,L.objetLot,L.type,L.prix, V.prixVariante,V.idLot,O.idOption as IDDO,O.prixOption
FROM
client as C

LEFT JOIN lot as L
ON C.id = L.id

LEFT JOIN variante as V

on V.idLot=L.idLot


LEFT JOIN option2 as O

on O.idLot=L.idLot

where


organisme LIKE '%$mc%'
group by L.idLot,O.idOption,V.idVariante
order by O.idOption


;";





J'obtiens ceci si par exemple je tape une valeur dans ma barre de recherche

Image

Mais le probleme c'est qu'ici on a plusieurs fois le même idVariante et aussi option.

Je voudrai avoir ceci :
Image


Voilà, donc je ne sais pas du tout si c'est possible, parce que en soit le résultat que j'obtiens reste correct mais je trouve que ça serait largement mieux comme ça et que peut-être c'est tout bête à faire .

Merci beaucoup de votre aide !

Mammouth du PHP | 652 Messages

15 mai 2019, 12:34

Salut, tu peux faire un group by sur lot et variante uniquement mais tu n'auras les données que de la première option remontée.
Tu peux ensuite dans le code qui écrit le tableau récupérer pour chaque lot/variante toutes les options correspondantes et décider comment afficher ça.