[PHP] Inner join ou WHERE entre deux tables

Résolu/Fermé
djflexlive Messages postés 557 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 23 avril 2015 - 6 mars 2009 à 00:10
BloodyAngel Messages postés 1482 Date d'inscription mardi 21 juin 2005 Statut Contributeur Dernière intervention 21 juin 2018 - 6 mars 2009 à 17:15
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.
A voir également:

15 réponses

BloodyAngel Messages postés 1482 Date d'inscription mardi 21 juin 2005 Statut Contributeur Dernière intervention 21 juin 2018 402
6 mars 2009 à 00:13
SELECT * FROM in_tracker, domaines WHERE substr(in_tracker.domaine,4) = domaines.domaine
0
djflexlive Messages postés 557 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 23 avril 2015 95
6 mars 2009 à 00:19
Apparement, ca ne donnes rien comme résultats.
0
BloodyAngel Messages postés 1482 Date d'inscription mardi 21 juin 2005 Statut Contributeur Dernière intervention 21 juin 2018 402
6 mars 2009 à 00:22
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...
0
djflexlive Messages postés 557 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 23 avril 2015 95
6 mars 2009 à 00:24
Le substr donne bien ce que je veux , un peu plus tard ; dans une autre requete.

	$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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BloodyAngel Messages postés 1482 Date d'inscription mardi 21 juin 2005 Statut Contributeur Dernière intervention 21 juin 2018 402
6 mars 2009 à 00:36
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...
0
djflexlive Messages postés 557 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 23 avril 2015 95
6 mars 2009 à 00:40
Elle fonctionne la $sql2 oui. En fait elle est appellée lors d'une boucle while associée à $sql.

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.
0
BloodyAngel Messages postés 1482 Date d'inscription mardi 21 juin 2005 Statut Contributeur Dernière intervention 21 juin 2018 402
6 mars 2009 à 00:55
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...
0
djflexlive Messages postés 557 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 23 avril 2015 95
6 mars 2009 à 00:57
Ha ben oui, l'intitulé du post est "[PHP] Inner join ou WHERE entre deux tables " :)

Hé oui php mélangé à du sql !!
0
BloodyAngel Messages postés 1482 Date d'inscription mardi 21 juin 2005 Statut Contributeur Dernière intervention 21 juin 2018 402
6 mars 2009 à 01:02
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...
0
djflexlive Messages postés 557 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 23 avril 2015 95
6 mars 2009 à 01:04
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
0
BloodyAngel Messages postés 1482 Date d'inscription mardi 21 juin 2005 Statut Contributeur Dernière intervention 21 juin 2018 402
6 mars 2009 à 01:11
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 ?
0
djflexlive Messages postés 557 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 23 avril 2015 95
6 mars 2009 à 01:14
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.
0
BloodyAngel Messages postés 1482 Date d'inscription mardi 21 juin 2005 Statut Contributeur Dernière intervention 21 juin 2018 402
6 mars 2009 à 01:21
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...
0
djflexlive Messages postés 557 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 23 avril 2015 95
6 mars 2009 à 01:32
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.
0
djflexlive Messages postés 557 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 23 avril 2015 95
6 mars 2009 à 16:01
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)

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 ;)
0
BloodyAngel Messages postés 1482 Date d'inscription mardi 21 juin 2005 Statut Contributeur Dernière intervention 21 juin 2018 402
6 mars 2009 à 17:15
Ah bin voilà on mourra moins bêtes ^^
Bon à savoir...
0