Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1051 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  probleme de jointure

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme de jointure

n°766300
worldcinem​ag
Posté le 16-06-2004 à 18:17:47  profilanswer
 

Bonjour,
 
j'ai une requete comme ça :
 

Code :
  1. $sql = "SELECT   bla1, bla2, count(*) as total
  2.   FROM     table1
  3.   where date_max >= '$date_lim'
  4.   group by bla1
  5.   order by total desc limit 1
  6.   ";


 
cette requete marche très bien  :)  mais là je veux en plus selectionner une autre table dans la requete
 
je veux ajouter  
 
select * from table2 dans la requete du dessus.
 
j'ai cherché dans la doc les jointures mais j'ai pas franchement compris le principe et j'ai fais quelques essais mais à chaque fois ça foire !
 
est ce que quelqu'un sait comment faire ça ?
 
merci d'avance
 
@+

mood
Publicité
Posté le 16-06-2004 à 18:17:47  profilanswer
 

n°766315
Berceker U​nited
PSN : berceker_united
Posté le 16-06-2004 à 18:38:54  profilanswer
 

Comprend pas tu veux que ta requete ait quel tete au final tu veux faire quoi ?
Tu veux faire une jointure entre deux table ou une requette dans une requette?


Message édité par Berceker United le 16-06-2004 à 18:39:29
n°766331
worldcinem​ag
Posté le 16-06-2004 à 18:56:22  profilanswer
 

salut,
 
en fait je veux garder ma première requete (celle qui est écrite)
 
et dedans je veux rajouter la deuxième qui est select * from table2
 
faire un truc du genre :
 

Code :
  1. $sql = "SELECT table2.*,  bla1, bla2, count(*) as total 
  2.     FROM     table1
  3.     where date_max >= '$date_lim'
  4.     group by bla1
  5.     order by total desc limit 1
  6.     ";


 
mais bon ça c'est faux. je veux une jointure entre mes 2 tables mais comme c'est une requete compliqué et que j'y connais pas grand chose en jointures j'y arrive pas !
 
merci beaucoup d'avance
 
@+


Message édité par worldcinemag le 16-06-2004 à 19:24:37
n°766343
simogeo
j'ai jamais tué de chats, ...
Posté le 16-06-2004 à 19:11:14  profilanswer
 

quel intérêt ?
 soit tu fais 2 requêtes séparées, soit tu fais une jointure qui va bien sur des champs qui sont concus a cet effet


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°766362
worldcinem​ag
Posté le 16-06-2004 à 19:24:26  profilanswer
 

bah en fait dans ma table1 je n'ai pas toutes les infos necessaires donc je dois aller les chercher dans la table2, la table2 sert juste pour compléter la table1, ce n'est pas sur elle que je veux faire la requete.
 
et donc c'est la que ça coince je ne vois pas comment faire !
 
j'espère que vous avez compris !
 
merci beaucoup

n°766370
Beegee
Posté le 16-06-2004 à 19:28:45  profilanswer
 

ben si t'as des infos dans la table 2 qui complètent ta table 1, il faut faire la jointure entre les champs dans table 1 et table 2 qui servent de clés, i.e. qui permettent de relier les 2 tables ...

n°766416
Berceker U​nited
PSN : berceker_united
Posté le 16-06-2004 à 20:43:49  profilanswer
 

Qu'elle est le point commun entre les deux table et peux tu me montrer tes deux requette je pourrais te faire une requette avec cela

n°766555
worldcinem​ag
Posté le 16-06-2004 à 22:46:35  profilanswer
 

alors voici la première requete :
 

Code :
  1. $sql = "SELECT   bla1, bla2, count(*) as total 
  2.     FROM     table1
  3.     where date_max >= '$date_lim'
  4.     group by bla1
  5.     order by total desc limit 1
  6.     ";


 
et la deuxième :

Code :
  1. select * from table2


 
les deux tables en ont commun le bla1.
 
merci beaucoup !

n°766562
T509
$job->GetJob(now)
Posté le 16-06-2004 à 22:52:23  profilanswer
 

Fait la liste des champs de chaque table stp

n°766565
worldcinem​ag
Posté le 16-06-2004 à 22:54:51  profilanswer
 

bah pour rester dans le vague tu prends pour la table2 par exemple
champ1
champ2
champ3
j'adapterai ensuite
 
et la table1
champ1 > corrélation avec l'autre champ1
bla2
bla3
 
voila j'espère que c ça !
 
merci encore

mood
Publicité
Posté le 16-06-2004 à 22:54:51  profilanswer
 

n°766592
red factio​n
Posté le 16-06-2004 à 23:47:46  profilanswer
 

qqn a un article qui explique comment fonctionne un sgdb du cote bas niveau pour traite une requete ?

n°766595
T509
$job->GetJob(now)
Posté le 16-06-2004 à 23:54:16  profilanswer
 
n°766603
simogeo
j'ai jamais tué de chats, ...
Posté le 17-06-2004 à 00:04:01  profilanswer
 

worldcinemag a écrit :

bah pour rester dans le vague tu prends pour la table2 par exemple
champ1
champ2
champ3
j'adapterai ensuite
 
et la table1
champ1 > corrélation avec l'autre champ1
bla2
bla3
 
voila j'espère que c ça !
 
merci encore


 

Code :
  1. $sql = "SELECT table2.*,  table1.*, count(table1.*) as total 
  2.       FROM table1 
  3.       LEFT OUTER JOIN table2 ON table1.champ1=table2.champ_de_jointure
  4.       where date_max >= '$date_lim' 
  5.       group by bla1 
  6.       order by total desc limit 1 
  7.       ";


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°769011
worldcinem​ag
Posté le 18-06-2004 à 14:09:01  profilanswer
 

salut,
 
désolé pour le retard  :ange:  
 
en fait j'arrive pas à faire marcher ma requete il me met que c'est ambigu pour orber by, enfin voici la requete :
 

Code :
  1. SELECT content_film.*, top_fiches.*, count(top_fiches.id_fiche) as total 
  2.         FROM top_fiches 
  3.         LEFT OUTER JOIN content_film ON top_fiches.id_fiche=content_film.id_fiche 
  4.         where date_max >= '$date_lim' 
  5.         group by id_fiche 
  6.         order by total desc limit 1


 
et donc il me sort ça :
 
Column: 'id_fiche' in group statement is ambiguous
 
j'ai essayé de faire group by top_fiches.id_fiche mais ça fait planter le serveur, j'ai aussi essayé de rajouter des parenthèses mais ça change quedal !
 
voila si t'as la solution merci beaucoup !  

n°769110
Beegee
Posté le 18-06-2004 à 14:46:58  profilanswer
 

group by top_fiches.id_fiche :)

n°769114
worldcinem​ag
Posté le 18-06-2004 à 14:48:07  profilanswer
 

j'ai fait aussi le group by top_fiches.id_fiche mais le serveur plante ! donc c pas ça !
 
merci quand meme

n°769161
simogeo
j'ai jamais tué de chats, ...
Posté le 18-06-2004 à 15:17:52  profilanswer
 

postes nous les 2 tables avec leur champs respectifs


Message édité par simogeo le 18-06-2004 à 15:20:11

---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°769191
worldcinem​ag
Posté le 18-06-2004 à 15:42:39  profilanswer
 

alors la table content_film contient en gros :
 
id_fiche
film
film_vo
histoire
... vais pas tous les faire, c trop long
 
et la table top_fiches
id_fiche
film
date_max
 
voila
encore merci !

n°769279
simogeo
j'ai jamais tué de chats, ...
Posté le 18-06-2004 à 16:16:18  profilanswer
 

en fait c'est ton order by qui ne veut rien dire .....
 
essayes :
 
SELECT content_film.*, top_fiches.*, count(top_fiches.id_fiche) as total    
          FROM top_fiches    
          LEFT OUTER JOIN content_film ON top_fiches.id_fiche=content_film.id_fiche  
          where date_max >= '$date_lim'    
          group by top_fiches.id_fiche      
 
 
pour voir ce que ca donne


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°769287
worldcinem​ag
Posté le 18-06-2004 à 16:20:01  profilanswer
 

nan ça marche pas non plus, le serveur se met à ramer à mort !
ça se complique ! :-)

n°769296
Beegee
Posté le 18-06-2004 à 16:23:19  profilanswer
 

le group by aussi ne veut rien dire ... tu veut afficher toutes les infos d'une table (content_film.*, etc.) en groupant les données !
 
Le mieux ce serait que tu expliques en français le résultat que tu veux avoir, ce sera plus simple.

n°769298
simogeo
j'ai jamais tué de chats, ...
Posté le 18-06-2004 à 16:23:42  profilanswer
 

très étonnant, ca n'a rien de compliqué .... c'est une requête de base .....
 
EXPLAIN SELECT content_film.*, top_fiches.*, count(top_fiches.id_fiche) as total    
          FROM top_fiches    
          LEFT OUTER JOIN content_film ON top_fiches.id_fiche=content_film.id_fiche  
          where date_max >= '$date_lim'    
          group by top_fiches.id_fiche      


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  probleme de jointure

 

Sujets relatifs
problème de sessionproblème de combobox à cause des guillemet
probleme de modification de fichier texte urgentproblème d'installation: IIS ne reconnait pas mes pages aspx
[PHP] Problème de redirectionprobleme de calques
Problème de recuperation de variableProblème de configuration pour QT
probleme sur calcul de temps[SQL] Problème de jointure
Plus de sujets relatifs à : probleme de jointure


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR