Téléchargement
illégal
Posez votre question Signaler

[PHP] Inner join ou WHERE entre deux tables [Résolu]

djflexlive 481Messages postés 26 mars 2008Date d'inscription 27 mai 2012Dernière intervention - Dernière réponse le 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.
Lire la suite 

[PHP] Inner join ou WHERE entre deux tables »

16 réponses
Réponse
+0
moins plus
SELECT * FROM in_tracker, domaines WHERE substr(in_tracker.domaine,4) = domaines.domaine
Ajouter un commentaire
Réponse
+0
moins plus
Apparement, ca ne donnes rien comme résultats.
Ajouter un commentaire
Réponse
+0
moins plus
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...
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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...
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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...
Ajouter un commentaire
Réponse
+0
moins plus
Ha ben oui, l'intitulé du post est "[PHP] Inner join ou WHERE entre deux tables " :)

Hé oui php mélangé à du sql !!
Ajouter un commentaire
Réponse
+0
moins plus
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...
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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 ?
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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...
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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 : http://www.developpez.net/...

Merci de ta patience tout de meme. Ca fonctionne désormais ;)
BloodyAngel- 6 mars 2009 à 17:15
Ah bin voilà on mourra moins bêtes ^^
Bon à savoir...
Ajouter un commentaire
Ce document intitulé « [PHP] Inner join ou WHERE entre deux tables » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?