Jump to content
MissOlana

Probleme jointure et Sql

Recommended Posts

Bonjour à tous
J'ai un autre probleme de jointure et je ne suis pas très forte dans la mise en forme des jointures thumbdown.gif .
Voici un mon probleme:
J'ai une table "amis" et j'aimerais afficher mes amis qui ont accepté la demande d'amitié mais aussi les amis qui ont eux accepté mon amitié.
Je m'explique avec un tableau


La table "amis"
+-----------++-----------+-----
| Destinataire | Expediteur |
+-----------++-----------+-----
| MissOlana | laure |
| Pierre | MissOlana |
| Julia | MissOlana |
| MissOlana | martine |
+-----------++-----------+----

J'arrive à afficher mes amis avec:
SELECT * FROM amis WHERE Destinataire= '$utilisateur' ORDER by time DESC
mais je n'arrive pas à joindre en même temps la colonne Expediteur.

Le resultat esperé:

Mes amis:
laure
Pierre
Julia
martine
(il n'y a pas mon nom dans la liste)

j'imagine une jointure du style
SELECT * FROM amis WHERE Destinataire= '$utilisateur' jointure Expediteur = '$utilisateur'order by time

u_idea_bulb02.gif Merci de votre aide car je bloque ;(

Share this post


Link to post
Share on other sites

Ce n'est pas une jointure que tu essayes de faire, c'est un simple critère de recherche



select * from amis where Destinataire = $utilisateur or Expediteur = $utilisateur

Rien de bien compliqué



ou alors tu ne veux que la liste de nom et ce serait plutôt une union :



select Expediteur as copain from amis where Destinataire = $utilisateur union ( select Destinataire as copain from amis where Expediteur = $utilisateur)

Share this post


Link to post
Share on other sites

En fait une union est toujours plus rapide qu'un "Or" dans une requête et personnellement, je ne mets jamais de parenthèse avec Mysql et si on veut faire un Order By dans une union, il faut que cette colonne apparaisse dans le Select :



SELECT Expediteur, time FROM amis WHERE Destinataire= '$utilisateur'
Union
SELECT Destinataire, time FROM amis WHERE Expediteur= '$utilisateur'
order by time

Share this post


Link to post
Share on other sites

Cela marche !thumbup.gif , merci pour vos lumiéres, effectivement je me suis égaré avec la jointure.


Je reviens si j'ai un autre probleme, j'ai bien fait de m'inscrire ici moip_flower01.gif


Share this post


Link to post
Share on other sites

Bon je relance cette conversation car j'aimerai afficher ses fameux amis si seulement ils s'ont connectés au site .



le requete de départ pour afficher mes amis:


SELECT Expediteur, time FROM amis WHERE Destinataire= '$utilisateur' Union SELECT Destinataire, time FROM amis WHERE Expediteur= '$utilisateur' order by time



je remonte donc mes amis, comment puis-je faire un trie ou une union supplementaire pour ne m'afficher uniquement les amis en ligne dans la table de "membre"



La table "membre"



+--------------+------------+
| Nom | Enligne |
+--------------+------------+
| Pierre | 1 |
| Julia | 0 |
| MissOlana | 0 |
+--------------+------------+

Résultat expéré >>>> Pierre qui est connectéthumbup.gif


Share this post


Link to post
Share on other sites

une petite jointure dans les deux requêtes, rien de compliqué. Mais au vu des différentes questions que tu as pu poser ici, j'ai l'impression que tu t'es lancée dans un développement largement hors de ta portée. Tu aurais du a mon avis te lancer dans un projet plus simple.


Share this post


Link to post
Share on other sites

Ok, je sors ;(


je suis d'accord avec toi je ne sais pas faire une jointure entre deux requêtes, mais justement je suis ici pour cela car mon ami ma dit que l'on pouvais m'aider, pour avancer, pour une entraide, moi j'ai pas fais d'école en programation, je fais juste un petit blog pour moi et mes amis, et je me débrouille avec google et les forums et un script de blog en état de marche que j'ameliore comme je peux, alors oui, je souhaite savoir faire une jointure entre deux requêtes, le projet est minime par rapport à vos sites.


Voila si on peux m'aider alors c'est coolcool2.gif


Share this post


Link to post
Share on other sites

Aider oui, tout faire non.



Tu dis que tu ne sais pas faire une jointure, mais as tu cherché des tutos dessus ? Il y en a plein qui trainent et qui sont très bien fait, tu as openclassrooms (anciennement site du zero) par exemple : http://fr.openclassrooms.com/informatique/cours/concevez-votre-site-web-avec-php-et-mysql/les-jointures-entre-tables



Tout comme toi je n'ai pas fait d'école de programmation, la grande partie de mes connaissances, je les ais apprises dans des livres (sur MySQL il y en a plein aussi) et sur des tutos sur le net. J'ai commencé par des projets simples et j'ai augmenté la difficultés au fur et à mesure que mes compétences augmentaient.



Si je liste tes posts :


Et celui-ci, ce ne sont que des problématiques de base, en gros il te manque les bases PHP / Mysql pour comprendre ce que tu fais, une bonne lecture du cours complet : http://fr.openclassrooms.com/informatique/cours/concevez-votre-site-web-avec-php-et-mysql te ferait le plus grand bien


Share this post


Link to post
Share on other sites

Sinon, la table membre, elle se met à jour comment ? J'entends par là, une personne qui n'est pas plus active sur le site et n'a pas utilisé le bouton "déconnexion", elle sera considérée comme Enligne.


Share this post


Link to post
Share on other sites

Alors je vais répondre simplement, à quoi sert un forum d'entraide sur webmaster hub si ont apprend tout correctement sur le site du Zero (openclassrooms) ?


et le fameux "tout faire" est valable pour une simple requete SQL ?


j'ai pas demandé de me faire le site complet, je demande juste une requete difficile pour moi.


Comme tu as vu sur mes posts précédent la communauté ma aidé pour mes soucis de requete.


Share this post


Link to post
Share on other sites

Un forum d’entraide viens en complément d'un apprentissage des bases, et ce que je remarque, c'est que tu ne les as pas, et c'est pour cela que je t’orientais vers un site comme openclassrooms.



On a déjà écrit entièrement pour toi plusieurs requêtes, mais si de ton côté, tu ne cherches pas a faire par toi même, ce n'est pas bon non plus.


Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...