Aller au contenu
MissOlana

Probleme jointure et Sql

Noter ce sujet :

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 ;(

Partager ce message


Lien à poster
Partager sur d’autres 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)

Partager ce message


Lien à poster
Partager sur d’autres 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

Partager ce message


Lien à poster
Partager sur d’autres 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


Partager ce message


Lien à poster
Partager sur d’autres 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


Partager ce message


Lien à poster
Partager sur d’autres 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.


Partager ce message


Lien à poster
Partager sur d’autres 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


Partager ce message


Lien à poster
Partager sur d’autres 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


Partager ce message


Lien à poster
Partager sur d’autres 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.


Partager ce message


Lien à poster
Partager sur d’autres 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.


Partager ce message


Lien à poster
Partager sur d’autres 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.


Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

×