Page 1 sur 1

Join + where

Posté : 02 mars 2021, 21:39
par Figuedi
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.

Re: Join + where

Posté : 02 mars 2021, 21:46
par or 1
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.

Re: Join + where

Posté : 02 mars 2021, 22:10
par Figuedi
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 !!!!

Re: [RESOLU] Join + where

Posté : 03 mars 2021, 10:35
par two3d
Festival des LIKE! :shock:

Re: [RESOLU] Join + where

Posté : 03 mars 2021, 17:36
par Ryle
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 :)

Re: [RESOLU] Join + where

Posté : 04 mars 2021, 23:42
par Figuedi
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))";