[PHP] Inner join ou WHERE entre deux tables
Résolu
djflexlive
Messages postés
557
Date d'inscription
Statut
Membre
Dernière intervention
-
BloodyAngel Messages postés 1482 Date d'inscription Statut Contributeur Dernière intervention -
BloodyAngel Messages postés 1482 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je cherche à faire ceci :
Base de donnée composée de N tables
$sql = mysql_query(" SELECT * FROM in_tracker WHERE substr(in_tracker.domaine,4) = domaines.domaine ");
J'ai fais différents essais, entre autre avec des INNER JOIN ; mais je n'arrives pas à faire fonctionner cette requete ...
Les domaines se trouvent dans deux tables différentes, l'une avec les WWW. et l'autre sans.
Seul soucis, c'est que dans 'in_tracker' il y'a les www. il y'a d'autres domaines enregistrés qui n'ont rien à voir avec la tables 'domaines'.
Qui à une idée ? Merci.
Je cherche à faire ceci :
Base de donnée composée de N tables
$sql = mysql_query(" SELECT * FROM in_tracker WHERE substr(in_tracker.domaine,4) = domaines.domaine ");
J'ai fais différents essais, entre autre avec des INNER JOIN ; mais je n'arrives pas à faire fonctionner cette requete ...
Les domaines se trouvent dans deux tables différentes, l'une avec les WWW. et l'autre sans.
Seul soucis, c'est que dans 'in_tracker' il y'a les www. il y'a d'autres domaines enregistrés qui n'ont rien à voir avec la tables 'domaines'.
Qui à une idée ? Merci.
A voir également:
- [PHP] Inner join ou WHERE entre deux tables
- Nombre de jours entre deux dates excel - Guide
- Deux ecran pc - Guide
- Comment faire deux colonnes sur word - Guide
- Itinéraire google map entre deux adresses - Guide
- Tables des matières word - Guide
15 réponses
Essaie WHERE substr(in_tracker.domaine,4) LIKEdomaines.domaine
Vérifie aussi ton substr... est-ce que ça donne bien ce que tu veux ? Je ne connais pas cette fonction...
Vérifie aussi ton substr... est-ce que ça donne bien ce que tu veux ? Je ne connais pas cette fonction...
Le substr donne bien ce que je veux , un peu plus tard ; dans une autre requete.
En revanche ici , meme avec le LIKE ; ca ne fonctionnes pas.
$domaine = substr($row[domaine],4); $sql2 = mysql_query(" SELECT in_day FROM domaines WHERE domaine='$domaine' ");
En revanche ici , meme avec le LIKE ; ca ne fonctionnes pas.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Est-ce que ta requête sql2 fonctionne ?
Si oui je te suggère de proposer par étape. Fais une requête SELECT simple avec une seule table. Si elle marche, rajoute une seconde table et fait une jointure. Si elle marche, utilise ton substr.
Ainsi tu devrais voir où ça coince...
Si oui je te suggère de proposer par étape. Fais une requête SELECT simple avec une seule table. Si elle marche, rajoute une seconde table et fait une jointure. Si elle marche, utilise ton substr.
Ainsi tu devrais voir où ça coince...
Elle fonctionne la $sql2 oui. En fait elle est appellée lors d'une boucle while associée à $sql.
Si $row2['domaine'] == substr($row['domaine'],4)
Instructions ...
Donc celle ci fonctionne bien, mais me sert à différencier l'affichage de tous les résultats enregistrés dans $sql.
Et là actuellement, j'essaye de demander d'afficher uniquement les enregistrements de $sql en fonction des domaines enregistrés dans $sql2.
while ($row = mysql_fetch_array($sql)) { $compteur++; $domaine = substr($row[domaine],4); $sql2 = mysql_query(" SELECT in_day FROM domaines WHERE domaine='$domaine' "); $row2 = mysql_fetch_array($sql2);
Si $row2['domaine'] == substr($row['domaine'],4)
Instructions ...
Donc celle ci fonctionne bien, mais me sert à différencier l'affichage de tous les résultats enregistrés dans $sql.
Et là actuellement, j'essaye de demander d'afficher uniquement les enregistrements de $sql en fonction des domaines enregistrés dans $sql2.
Ah oki... Mais en fait ton substr c'est bien un requête PHP alors...
Parce que comme je le vois dans ton premier post, tu le traites comme si c'était un fonction SQL...
Parce que comme je le vois dans ton premier post, tu le traites comme si c'était un fonction SQL...
Ha ben oui, l'intitulé du post est "[PHP] Inner join ou WHERE entre deux tables " :)
Hé oui php mélangé à du sql !!
Hé oui php mélangé à du sql !!
Oui y'a pas de mal mais tu ne peux pas demander à Mysql de faire du PHP... :-/
Tu dois utiliser ta fonction PHP dans PHP et transmettre le résultat à MySQL au travers de ta requête...
Tu dois utiliser ta fonction PHP dans PHP et transmettre le résultat à MySQL au travers de ta requête...
Je penses que ca doit etre faisable un susbstr tel quel dans la requetes. Y'a des posts similaires :
http://www.commentcamarche.net/forum/affich 6545400 requete mysql utilisant where et substr
http://www.commentcamarche.net/forum/affich 6545400 requete mysql utilisant where et substr
Effectivement tu as raison.
Cela étant, ton SUBSTR te renverra tous les caractères de ton champ A PARTIR du 4ème caractère, jusqu'à la fin du champ. C'est bien ça que tu veux ?
Cela étant, ton SUBSTR te renverra tous les caractères de ton champ A PARTIR du 4ème caractère, jusqu'à la fin du champ. C'est bien ça que tu veux ?
Le substr est identique à celui de $sql2 . Donc pour www.google.fr , substr('www.google.fr',4) renverra google.fr uniquement.
Ce que je demandes dans $sql2 fonctionne bien, la requete est similaire dans $sql mais je ne trouves pas comment le faire fonctionner.
Ce que je demandes dans $sql2 fonctionne bien, la requete est similaire dans $sql mais je ne trouves pas comment le faire fonctionner.
Oki donc je résume :
$sql2 = mysql_query(" SELECT in_day FROM domaines WHERE domaine='$domaine' ");
FONCTIONNE
SELECT * FROM in_tracker, domaines WHERE substr(in_tracker.domaine,4) = domaines.domaine
FONCTIONNE PAS
Bin désolé je ne comprend pas...
Je ne pense pas que le problème soit dans la requête...
$sql2 = mysql_query(" SELECT in_day FROM domaines WHERE domaine='$domaine' ");
FONCTIONNE
SELECT * FROM in_tracker, domaines WHERE substr(in_tracker.domaine,4) = domaines.domaine
FONCTIONNE PAS
Bin désolé je ne comprend pas...
Je ne pense pas que le problème soit dans la requête...
En effet je comprends pas pourquoi ca ne donne rien comme résultats. Dans MySql directement, c'est pareil ; cette requete ne donne aucun résultats ...
Je vais me coucher, la nuit porte conseil soi disant ;)
Merci et je te tiens au jus si je trouve comment faire.
Je vais me coucher, la nuit porte conseil soi disant ;)
Merci et je te tiens au jus si je trouve comment faire.
En effet, ca ne pouvait pas fonctionner ... Bizarrement, dans une requete sql en php, il faut rajouter +1 à la requete substr
Substr($var,N+1) , en temps normal : substr($var,N)
Cf : https://www.developpez.net/forums/d248503/bases-donnees/mysql/requetes/mysql-substr-requ-te/
Merci de ta patience tout de meme. Ca fonctionne désormais ;)
Substr($var,N+1) , en temps normal : substr($var,N)
le mid ou substring commence le comptage a partir de 1:
Cf : https://www.developpez.net/forums/d248503/bases-donnees/mysql/requetes/mysql-substr-requ-te/
Merci de ta patience tout de meme. Ca fonctionne désormais ;)