[SQL-PHP] Problème de sous-requête
Fermé
David
-
4 août 2006 à 11:44
Darshu Messages postés 303 Date d'inscription lundi 30 janvier 2006 Statut Membre Dernière intervention 3 avril 2008 - 7 août 2006 à 11:07
Darshu Messages postés 303 Date d'inscription lundi 30 janvier 2006 Statut Membre Dernière intervention 3 avril 2008 - 7 août 2006 à 11:07
A voir également:
- [SQL-PHP] Problème de sous-requête
- Easy php - Télécharger - Divers Web & Internet
- Logiciel sql - Télécharger - Bases de données
- Retour a la ligne php ✓ - Forum PHP
- Requête sql date supérieure à ✓ - Forum Programmation
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de tennis mais pas de tennis de table ✓ - Forum Java
14 réponses
Darshu
Messages postés
303
Date d'inscription
lundi 30 janvier 2006
Statut
Membre
Dernière intervention
3 avril 2008
64
4 août 2006 à 11:50
4 août 2006 à 11:50
Salut. Tu pourrais mettre l'architecture de tes tables ?
Sinon je dirais d'essayer ça plutôt
Sinon je dirais d'essayer ça plutôt
SELECT * FROM societe WHERE id_departement2 IN (SELECT id_departement FROM departement WHERE departement.id_region='$id_reg')
Oui j'ai regardé sur google, sur plusieurs forums et c'est pour cela que je pose la question car je ne trouve pas la cause de ce problème...
Pour ta proposition, aucun effet.......
Pour la structure de mes tables, voila :
TABLE SOCIETE : id_societe, id_departement, id_departement2, id_region + d'autres champs
TABLE departement : id_departement, id_region, nom_departement
TABLE region : id_region, nom_region
Pour ta proposition, aucun effet.......
Pour la structure de mes tables, voila :
TABLE SOCIETE : id_societe, id_departement, id_departement2, id_region + d'autres champs
TABLE departement : id_departement, id_region, nom_departement
TABLE region : id_region, nom_region
Darshu
Messages postés
303
Date d'inscription
lundi 30 janvier 2006
Statut
Membre
Dernière intervention
3 avril 2008
64
4 août 2006 à 12:26
4 août 2006 à 12:26
Humm, si ton "IN" ne marche pas, c'est surement parce qu'il s'attend à avoir des strings (IN ("1","2") par exemple).
Et sinon, est-ce que
Et sinon, est-ce que
SELECT * FROM societe WHERE (societe.id_departement2 = departement.id_departement) AND (departement.id_region='$id_reg')ne marcherait pas ?
Oui je sais qu'il s'attend a recevoir des string puisque quand je mets des valeurs dans mon IN ça marche....
Je ne comprends pas pourquoi ça ne veut pas marcher.....
Pour info, mon id_departement2 n'est pas une clé, primaire ou secondaire....faut-il que je fasse une jointure entre les tables???
Ta seconde proposition n' aucun effet non plus...
Jvoulais trouver une alternative mais c'est impossible, il faut que je trouve pourquoi ça marche pas car je ne peux pas faire autrement...
Je veux faire apparaitre des societes qui ne sont pas présentent sur la région sélectionnée mais qui interviennent quand même sur certains département...
L'id_region n'est donc pas le même, ni l'id_departement.
Est-ce que je peux te dire autre chose pour essayer de t'aider???
Merci de ton aide déjà et de tes propositions...
Je ne comprends pas pourquoi ça ne veut pas marcher.....
Pour info, mon id_departement2 n'est pas une clé, primaire ou secondaire....faut-il que je fasse une jointure entre les tables???
Ta seconde proposition n' aucun effet non plus...
Jvoulais trouver une alternative mais c'est impossible, il faut que je trouve pourquoi ça marche pas car je ne peux pas faire autrement...
Je veux faire apparaitre des societes qui ne sont pas présentent sur la région sélectionnée mais qui interviennent quand même sur certains département...
L'id_region n'est donc pas le même, ni l'id_departement.
Est-ce que je peux te dire autre chose pour essayer de t'aider???
Merci de ton aide déjà et de tes propositions...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Darshu
Messages postés
303
Date d'inscription
lundi 30 janvier 2006
Statut
Membre
Dernière intervention
3 avril 2008
64
4 août 2006 à 14:32
4 août 2006 à 14:32
Hmmm, la je cale un peu.
Sinon je vois bien une autre méthode : tu fais ta sous requête (mysql_query), tu mets le résultat dans un tableau et tu le passes en paramètre à ta requête principale ... Mais ça tient plus du bidouillage !
Sinon je vois bien une autre méthode : tu fais ta sous requête (mysql_query), tu mets le résultat dans un tableau et tu le passes en paramètre à ta requête principale ... Mais ça tient plus du bidouillage !
Je viens d'y penser moi aussi...
Mais comment je fais???JE fais une boucle pour tester toutes les valeurs de mon tableau ou bien il existe quelque chose pour faire : si id_departement2 IN TABLEAU????
Mais comment je fais???JE fais une boucle pour tester toutes les valeurs de mon tableau ou bien il existe quelque chose pour faire : si id_departement2 IN TABLEAU????
Darshu
Messages postés
303
Date d'inscription
lundi 30 janvier 2006
Statut
Membre
Dernière intervention
3 avril 2008
64
4 août 2006 à 15:30
4 août 2006 à 15:30
Moi j'aurais fait avec une boucle du genre while ($row = mysql_fetch_row).
Jsuis pas arrivé à faire fonctionner le système avec la requête principale se servant des données du tableau de résultats de la sous-requête...
Quelqu'un pourrait m'aider?
Merci
Quelqu'un pourrait m'aider?
Merci
Darshu
Messages postés
303
Date d'inscription
lundi 30 janvier 2006
Statut
Membre
Dernière intervention
3 avril 2008
64
7 août 2006 à 09:27
7 août 2006 à 09:27
Tu as essayé avec quoi ? Faire voir le code intéressant.
$result = mysql_query("SELECT id_departement FROM departement where id_region='$id_reg'");
while ($row = mysql_fetch_row(result))
{
$result2 = mysql_query("SELECT * FROM societe where id_departement2=$row");
}
Jcrois que jmembrouille là.......
while ($row = mysql_fetch_row(result))
{
$result2 = mysql_query("SELECT * FROM societe where id_departement2=$row");
}
Jcrois que jmembrouille là.......
Darshu
Messages postés
303
Date d'inscription
lundi 30 janvier 2006
Statut
Membre
Dernière intervention
3 avril 2008
64
7 août 2006 à 10:04
7 août 2006 à 10:04
Oui en effet, vu que $row est un tableau !
Essaie plutôt avec ça :
Essaie plutôt avec ça :
$result2 = mysql_query("SELECT * FROM societe WHERE `id_departement2` = '$row[0]'");Prends d'ailleurs l'habitude de mettre SELECT,UPDATE,DELETE,FROM,WHERE,LIKE,AS etc en majuscules, ça t'aide à mieux relire ton code pour voir la requête :) Autre chose, l'appel de variable dans une requête se faire toujours avec des quotes, sous peine d'erreur !
ok j'essaye ça...mais si je mets ma requete dans la boucle, il faut aussi que je mette tout de suite après l'affichage car sinon au final j'aurais qu'une reponse puisque le $result2 va changer a chaque fois sinon.......
Merci pour les conseils : je sais, je fais attention à l'ecriture mais c'est en recopiant que je n'ai pas mis les quote et les majuscules...
Merci pour les conseils : je sais, je fais attention à l'ecriture mais c'est en recopiant que je n'ai pas mis les quote et les majuscules...
Darshu
Messages postés
303
Date d'inscription
lundi 30 janvier 2006
Statut
Membre
Dernière intervention
3 avril 2008
64
7 août 2006 à 11:07
7 août 2006 à 11:07
Oui tout à fait, il te faudra même probablement rajouter un while dans ta nouvelle requête.
Quant au recopiage, tu peux aussi tout simplement copier/coller le code et utiliser la balise code, qui conservera la mise en page.
Quant au recopiage, tu peux aussi tout simplement copier/coller le code et utiliser la balise code, qui conservera la mise en page.