[RESOLU] Join + where

Eléphant du PHP | 111 Messages

02 mars 2021, 21:39

Bonjour,

Cette requête fonctionne parfaitement

Code : Tout sélectionner

$query = "SELECT * FROM systeme where ( SystemNo LIKE '".$name."' OR SystemName LIKE '".$name."' OR SiteName LIKE '".$name."' OR AddressLine1 LIKE '".$name."' OR PostCode LIKE '".$name."' OR Town LIKE '".$name."' OR FSESurname LIKE '".$name."' OR SerialNo like '".$name."') AND (SystemNo LIKE '".$name2."' OR SystemName LIKE '".$name2."' OR SiteName LIKE '".$name2."' OR AddressLine1 LIKE '".$name2."' OR PostCode LIKE '".$name2."' OR Town LIKE '".$name2."' OR FSESurname LIKE '".$name2."' OR SerialNo like '".$name2."') AND (SystemNo LIKE '".$name3."' OR SystemName LIKE '".$name3."'OR SiteName LIKE '".$name3."' OR AddressLine1 LIKE '".$name3."' OR PostCode LIKE '".$name3."' OR Town LIKE '".$name3."' OR FSESurname LIKE '".$name3."' OR SerialNo like '".$name3."')";
la requête fonctionne également

Code : Tout sélectionner

SELECT systeme.* FROM systeme INNER JOIN contrat ON systeme.SystemNo = contrat.SystemNo WHERE contrat.ContractEndDate > date_sub(now(), interval 8 month)
si je fusionne les deux comme ceci patatras ça ne marche pas

Code : Tout sélectionner

$query = "SELECT * FROM systeme where ( SystemNo LIKE '".$name."' OR SystemName LIKE '".$name."' OR SiteName LIKE '".$name."' OR AddressLine1 LIKE '".$name."' OR PostCode LIKE '".$name."' OR Town LIKE '".$name."' OR FSESurname LIKE '".$name."' OR SerialNo like '".$name."') AND (SystemNo LIKE '".$name2."' OR SystemName LIKE '".$name2."' OR SiteName LIKE '".$name2."' OR AddressLine1 LIKE '".$name2."' OR PostCode LIKE '".$name2."' OR Town LIKE '".$name2."' OR FSESurname LIKE '".$name2."' OR SerialNo like '".$name2."') AND (SystemNo LIKE '".$name3."' OR SystemName LIKE '".$name3."'OR SiteName LIKE '".$name3."' OR AddressLine1 LIKE '".$name3."' OR PostCode LIKE '".$name3."' OR Town LIKE '".$name3."' OR FSESurname LIKE '".$name3."' OR SerialNo like '".$name3."')INNER JOIN contrat ON systeme.SystemNo = contrat.SystemNo WHERE contrat.ContractEndDate > date_sub(now(), interval 8 month";
Je continue à cherche de mon côté, mais j'avouerai avoir besoin d'aide.

Mammouth du PHP | 2703 Messages

02 mars 2021, 21:46

il faut un seul where donc commencer par
INNER JOIN contrat ON systeme.SystemNo = contrat.SystemNo WHERE contrat.ContractEndDate > date_sub(now(), interval 8 month)
et ajouter le reste des conditions.

Eléphant du PHP | 111 Messages

02 mars 2021, 22:10

Bien vu merci,
cela fonctionne si un seul where

Code : Tout sélectionner

$query = "SELECT (systeme.SystemNo LIKE '".$rech."' OR systeme.SystemName LIKE '".$rech."' OR systeme.SiteName LIKE '".$rech."' OR systeme.AddressLine1 LIKE '".$rech."' OR systeme.PostCode LIKE '".$rech."' OR systeme.Town LIKE '".$rech."' OR systeme.FSESurname LIKE '".$rech."' OR systeme.SerialNo like '".$rech."') AND (systeme.SystemNo LIKE '".$rech2."' OR systeme.SystemName LIKE '".$rech2."' OR systeme.SiteName LIKE '".$rech2."' OR systeme.AddressLine1 LIKE '".$rech2."' OR systeme.PostCode LIKE '".$rech2."' OR systeme.Town LIKE '".$rech2."' OR systeme.FSESurname LIKE '".$rech2."' OR systeme.SerialNo like '".$rech2."') AND (systeme.SystemNo LIKE '".$rech3."' OR systeme.SystemName LIKE '".$rech3."'OR systeme.SiteName LIKE '".$rech3."' OR systeme.AddressLine1 LIKE '".$rech3."' OR systeme.PostCode LIKE '".$rech3."' OR systeme.Town LIKE '".$rech3."' OR systeme.FSESurname LIKE '".$rech3."' OR systeme.SerialNo like '".$rech3."') FROM systeme INNER JOIN contrat ON systeme.SystemNo = contrat.SystemNo WHERE contrat.ContractEndDate > date_sub(now(), interval 8 month)";
Merci !!!!

Avatar du membre
Mammouth du PHP | 1564 Messages

03 mars 2021, 10:35

Festival des LIKE! :shock:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 mars 2021, 17:36

Festival des LIKE! :shock:
C'est l'influence de facebook ;)

Par contre, je doute que la requête ci-dessus fonctionne avec les conditions placées dans le SELECT plutôt que dans le WHERE, mais vu que tu indiques que cela fonctionne et la mention "résolu" je suppose que tu as fait la correction dans ton code à défaut du forum :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 111 Messages

04 mars 2021, 23:42

En effet je l'ai modifié ainsi

Code : Tout sélectionner

$query = "SELECT systeme.*,contrat.* FROM systeme INNER JOIN contrat ON systeme.SystemNo = contrat.SystemNo WHERE ( systeme.SystemNo LIKE '".$name."' OR systeme.SystemName LIKE '".$name."' OR systeme.SiteName LIKE '".$name."' OR systeme.AddressLine1 LIKE '".$name."' OR systeme.PostCode LIKE '".$name."' OR systeme.Town LIKE '".$name."' OR systeme.FSESurname LIKE '".$name."' OR systeme.SerialNo like '".$name."') AND (systeme.SystemNo LIKE '".$name2."' OR systeme.SystemName LIKE '".$name2."' OR systeme.SiteName LIKE '".$name2."' OR systeme.AddressLine1 LIKE '".$name2."' OR systeme.PostCode LIKE '".$name2."' OR systeme.Town LIKE '".$name2."' OR systeme.FSESurname LIKE '".$name2."' OR systeme.SerialNo like '".$name2."') AND (systeme.SystemNo LIKE '".$name3."' OR systeme.SystemName LIKE '".$name3."'OR systeme.SiteName LIKE '".$name3."' OR systeme.AddressLine1 LIKE '".$name3."' OR systeme.PostCode LIKE '".$name3."' OR systeme.Town LIKE '".$name3."' OR systeme.FSESurname LIKE '".$name3."' OR systeme.SerialNo like '".$name3."') AND ( (DATEDIFF(contrat.ContractEndDate, '2020-01-01')>0 AND DATEDIFF(contrat.ContractEndDate, '2021-01-01')<0) OR (DATEDIFF(systeme.DateInstalled, '2020-01-01')>0 AND DATEDIFF(systeme.DateInstalled, '2021-01-01')<0))";