[SQL-PHP] Problème de sous-requête
David
-
Darshu Messages postés 303 Date d'inscription Statut Membre Dernière intervention -
Darshu Messages postés 303 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un problème avec une requête SQL qui ne renvoit aucun résultat alors qu'elle devrait . Cette requête doit me sélectionner plusieurs enregistrements dans la table societe, enregistrements dont l'id_departement2 fait partie d'une sélection de département (tous les départements d'une région sélectionnée $id_reg).
voilà la requête :
SELECT * FROM societe
where societe.id_departement2 IN
(SELECT id_departement FROM departement where departement.id_region='$id_reg')
J'ai testé la sous-requete toute seule et elle marche.Je ne comprends pas d'ou vient le problème...
Merci de votre aide
J'ai un problème avec une requête SQL qui ne renvoit aucun résultat alors qu'elle devrait . Cette requête doit me sélectionner plusieurs enregistrements dans la table societe, enregistrements dont l'id_departement2 fait partie d'une sélection de département (tous les départements d'une région sélectionnée $id_reg).
voilà la requête :
SELECT * FROM societe
where societe.id_departement2 IN
(SELECT id_departement FROM departement where departement.id_region='$id_reg')
J'ai testé la sous-requete toute seule et elle marche.Je ne comprends pas d'ou vient le problème...
Merci de votre aide
A voir également:
- [SQL-PHP] Problème de sous-requête
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Logiciel sql - Télécharger - Bases de données
- Sql lister les tables ✓ - Forum Programmation
- Erreur lors de l'envoi de la requête facebook - Forum Facebook
14 réponses
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
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
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????
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
$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à.......
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...