Précédent   Forum des professionnels en informatique > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/01/2011, 01h24   #1
Candidat au titre de Membre du Club
 
Inscription : octobre 2005
Messages : 47
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 47
Points : 14
Points : 14
Par défaut SELECT JOIN LIMIT

Bonjour,

J'ai deux bases

Base 1 (références Utilisateur)
Base client (coordonnées Utilisateur)

Le but du jeu est de relier en fonction de la date et de la clé REF, l'utilisateur à ses coordonnées postale (sachant qu'il est parfois dupliqué n fois), pour éditer un fichier PDF.
Et on ne doit sortir que ceux qui sont affecté à la date de la base1

Cette requête fonctionne sur deux de mes bases mais au delà de 500 enregistrements je suis en timeout, (même en jouant sur sur le timeout c'est ko) requête 0 à 500 résultat OK
Si je lance la requête de 500 à 510 je suis aussi en timeout.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
SELECT distinct 
base1.date1,base1.REF,
client.REF,client.adresse
From base1 
LEFT JOIN client on base1.REF=client.REF" 
WHERE base1.date1=@REF_ASS
LIMIT " & TextBox1.Text & " , " & TextBox2.Text

...

 cmd.Parameters.Add("@REF_ASS", MySqlDbType.VarChar).Value = date.SelectedValue
......
du coup j'ai aussi essayé

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT base3.REF,base3.date1,client.REF,client.adresse
FROM (

SELECT 
base1.REF,base1.date1
FROM base1
ORDER BY base1.REF"
LIMIT " & TextBox1.Text & " , " & TextBox2.Text 

 ) base3" 

LEFT JOIN client on client.REF =base3.REF" 
WHERE NOT client.REF IS NULL" 
ORDER BY base3.REF,client.REF"

dans ce cas là la requête est rapide mais si je rajoute dans base 3 le filtre date (WHERE base1.date1=@REF_ASS) il ne filtre pas et me renvoi tous les résultats
et si je le met avant le ORDER BY il me renvoie zéro résultat.

Sachant que je veux pourvoir envoyer mes pdf par mail, je veux pouvoir choisir le nombre d'enregistrements que j'y intègre, donc j'ai besoin de la limite pour qu'ils me retourne que des séries de x enregistrements.

Sur la deuxième requête je tourne en rond sur le filtre et la limite?

Pourriez vous m'aider?
letel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2011, 22h49   #2
Candidat au titre de Membre du Club
 
Inscription : octobre 2005
Messages : 47
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 47
Points : 14
Points : 14
Bonjour, je viens de trouver mon erreur sur l'utilisation des limites.

Voici le code au cas où :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
SELECT DISTINCT base3.REF,base3.date1,client.REF,client.adresse
FROM (
SELECT DISTINCT base1.REF,base1.date1
FROM base1
WHERE base1.date1=@REF_ASS 
ORDER BY base1.REF
LIMIT  & TextBox1.Text & " , " & TextBox2.Text 
 ) base3
LEFT OUTER JOIN client ON client.REF =base3.REF
WHERE NOT client.REF IS NULL
ORDER BY base3.REF
Textbox1.text= debut du filtre
textbox2.text = nombre de champs
letel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h46.


 
 
 
 
Partenaires

Hébergement Web