Poster une réponse à un sujet: [SQL] probleme de jointure
Attention, ce sujet est un sujet ancien (6163 jours sans réponse)
Gras [b]Texte[/b] Italique [i]Italique[/i] Souligné [u]Souligné[/u] Barré [strike]Barré[/strike]
Courriel [email=nobody@nobody.org]Nom[/email] Lien [url=http://www.website.com]Texte[/url] Ancre [anchor]Nom[/anchor] Image [img]http://www.website.com/image.jpg[/img] Insérer une image en provenance du site
Aligné à gauche [align=left]Texte[/align] Centré [align=center]Texte[/align] Aligné à droite [align=right]Texte[/align] Toute la largeur [align=justify]Texte[/text]
Couleur [color=#000000]Text[/color] Mise en forme [highlight=pascal]Texte[/highlight] Widgets Emoticons :code: [:code] Convertisseur HTML vers BBCode Convertisseur Word vers BBCode
Prévisualisation Vérification de l'orthographe

Copier Coller Couper Tout sélectionner
Tout effacer Insérer la date Insérer l'heure Insérer la date et heure Insérer votre IP
Liste [list=square][item]BlaBla[/item][/list] Liste Numérotée [list=decimal][item]BlaBla[/item][/list]
Citation [quote=name]Texte[/quote] Spoiler [spoiler]James est le meurtrier![/spoiler]
Tout en majuscules [uppercase]Texte[/uppercase] Tout en minuscules [lowercase]Texte[/lowercase] l33t [l33t]Je suis un nerd[/l33t] Texte en indice [sub]Texte[/sub] Texte en exposant [sup]Texte[/sup] Taille du texte [size=8]Texte[/size]
 
blietaer
Mmh quand je fais des selects sur deux tables en one-shot, je prefere toujours des LEFT JOIN plutot que les nested-select de beauf, sauf si les tables ne sont pas 1-to-1 keyable...mais là on parlera de malchance ou de mal-design...
En plus dans ton cas les msgid et status on l'air de bien flirter ensemble, non?
sur le flex, ca devrait groover.


Mais vraiment change de pseudo, la qualité des cauetidienne te hape au passage vers l'abime de la médiocrité télévisuelle et dans la tristesse du trou-noir intergalactique créatif dont elles font preuve sans que, à priori, tu n'y sois pour quoi que ce soit.
cauet
Voila la requête "au propre"

  1. SELECT 
  2. `envoi_push`.`content`, 
  3. `confirm_push`.`status` 
  4. FROM 
  5. `envoi_push` 
  6. JOIN  
  7. SELECT `status`, `msgid` 
  8. FROM `confirm_push`  
  9. WHERE `confirm_push`.`id` IN ( 
  10. SELECT Max(`id`) 
  11. FROM `confirm_push` 
  12. GROUP BY `confirm_push`.`msgid` 
  13. ) AS `confirm_push` 
  14. ON `envoi_push`.`status` = `confirm_push`.`msgid`  
  15. ORDER by `confirm_push`.`status` ASC 
  16. LIMIT 10;


Sur serveur de Test avec 1 enregistrement, elle fonctionne.
Par contre en Prod avec des milliers de records, ca foire total.

La requête n'en finit pas, je laisse tourner plus de 3 minutes sans réponse, avant de killer.

Une idée ?
Keeper
chaine vide <> valeur nulle
Clandestino
Pourquoi tu forces l'envoi de valeurs nulles dans des champs qui ne peuvent pas l'être ? (udh et error) ?
cauet
  1. SELECT 
  2. `envoi_push`.`content`, 
  3. `confirm_push`.`status` 
  4. FROM 
  5. `envoi_push` 
  6. JOIN  
  7. SELECT *  
  8. FROM `confirm_push`  
  9. WHERE `confirm_push`.id IN ( 
  10. SELECT Max(id) 
  11. FROM `confirm_push` 
  12. GROUP BY `confirm_push`.`msgid` 
  13. ) AS `confirm_push` 
  14. ON `envoi_push`.`status` = `confirm_push`.`msgid` LIMIT 10;



Ca j'avais encore jamais vu :smile: une requête mySQL qui fout phpmyadmin par terre :grin: (et une série de process Apache)

Structure de la table:

  1. CREATE TABLE IF NOT EXISTS `envoi_push` ( 
  2.   `id` int(11NOT NULL auto_increment, 
  3.   `nichandle` varchar(50NOT NULL
  4.   `number` varchar(15NOT NULL
  5.   `content` varchar(160NOT NULL
  6.   `sendertype` varchar(10NOT NULL
  7.   `senderid` varchar(15NOT NULL
  8.   `typecontent` varchar(10NOT NULL
  9.   `udh` varchar(500NOT NULL
  10.   `status` int(10NOT NULL
  11.   `error` varchar(10NOT NULL
  12.   `date` datetime NOT NULL
  13.   PRIMARY KEY  (`id`) 
  14. ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=130605 ; 
  15. -- 
  16. -- Contenu de la table `envoi_push` 
  17. -- 
  18. INSERT INTO `envoi_push` (`id`, `nichandle`, `number`, `content`, `sendertype`, `senderid`, `typecontent`, `udh`, `status`, `error`, `date`) VALUES 
  19. (130602'mickael''32472892611''hi''number''3235559657''text'''3421301'''2007-12-21 07:45:09'); 
  20. CREATE TABLE IF NOT EXISTS `confirm_push` ( 
  21.   `id` int(11NOT NULL auto_increment, 
  22.   `msgid` int(11NOT NULL
  23.   `status` varchar(35NOT NULL
  24.   `date` datetime NOT NULL
  25.   KEY `msgid` (`msgid`), 
  26.   KEY `id` (`id`) 
  27. ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=235057 ; 
  28. -- 
  29. -- Contenu de la table `confirm_push` 
  30. -- 
  31. INSERT INTO `confirm_push` (`id`, `msgid`, `status`, `date`) VALUES 
  32. (2350513421301'operator''2007-12-21 07:45:28'), 
  33. (2350523421301'handset''2007-12-21 07:45:33');
kortenberg
C'est un peu pour cela que j'ai écrit
Comme l'a proposé keeper, au début, on peut le faire avec un deuxième join ...
Keeper
:angry:

c'est un peu ce que j'ai proposé au début .....
cauet
J'ai testé sur des tables bidons que j'ai en stock.
Ca me donne, pour chaque dossier la date de la dernière facture.
C'est bien ce genre de chose que tu veux?
  1. SELECT 
  2. `dossier`.*, 
  3. `factureclient`.`DateFacture` 
  4. FROM 
  5. `dossier` 
  6. JOIN  
  7. SELECT *  
  8. FROM `factureclient`  
  9. WHERE `factureclient`.FactureId IN ( 
  10. SELECT Max(FactureId) 
  11. FROM `factureclient` 
  12. GROUP BY `factureclient`.`DossierId` 
  13. ) AS `factureclient` 
  14. ON `dossier`.`DossierId` = `factureclient`.`DossierId`


Comme l'a proposé keeper, au début, on peut le faire avec un deuxième join mais j'ai pas confiance dans l'ordre de leur execution.



la sous requpete voilà ce qu'il me faut !
Merci kortenberg, je vais essayer !! :smile:
kortenberg
depuis la version 4.1
ovh
kort'> mysql sait faire des sous-requêtes ? :figti:
Catégorie:  






Ada
CSS
Cobol
CPP
HTML
Fortran
Java
JavaScript
Pascal
Perl
PHP
Python
SQL
VB
XML
Anon URL
DailyMotion
eBay
Flickr
FLV
Google Video
Google Maps
Metacafe
MP3
SeeqPod
Veoh
Yahoo Video
YouTube
6px
8px
10px
12px
14px
16px
18px
Informaticien.be - © 2002-2024 AkretioSPRL  - Generated via Kelare
The Akretio Network: Akretio - Freedelity - KelCommerce - Votre publicité sur informaticien.be ?