Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en 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/11/2007, 16h40   #1
Membre éclairé
 
Avatar de Linio
 
Inscription : octobre 2005
Messages : 427
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 427
Points : 304
Points : 304
Par défaut Pseudo Clonage de ligne

Bonjour,

Voilà n'étant pas une bête de SQL je cherche un moyen d'effectuer une requête, et j'avoue ne pas avoir la connaissance pour se faire.

Ma requête de base est une requête typique qui récupère des lignes dans deux tables jointes en fonction de la distance à un point donné en entrée.

Typiquement pour un point référent de coordonnées 50;80 :

Code :
1
2
3
4
5
SELECT id_objet, property1, property2, position_x, position_y 
FROM table1 
INNER JOIN table2 ON table1.id_objet = table2.id_objet 
WHERE SQRT((position_x - 50)*(position_x - 50) + (position_y - 80)*(position_y - 80)) 
ORDER BY SQRT((position_x - 50)*(position_x - 50) + (position_y - 80)*(position_y - 80))
Jusque là tout va bien, maintenant j'ai une colonne qui me dit si elle est à 1 que ma ligne est 'clonée', à ce moment là j'aimerais pouvoir créer un nombre X de clones de cette ligne à une distance aléatoire (mais de 1 maximum), de les renvoyer en même temps que les autres résultats avec les mêmes données mais les coordonnées modifiées, et surtout le plus important: ordonnées.

Est-ce possible ou pas?
__________________
Linio
Linio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2007, 18h12   #2
Membre Expert
 
Avatar de Sivrît
 
Inscription : février 2006
Messages : 953
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : février 2006
Messages : 953
Points : 1 189
Points : 1 189
Je suppose que dans le WHERE il manque quelque chose comme "< DISTANCE". En parlant du WHERE je suggère de faire sauter le SQRT puisqu'il n'est pas utile et alourdira beaucoup les calculs.

Pour ce qui est des clones, ce sont des points virtuels qui n'existent pas en base ? Ou il s'agit de les créer d'abord puis de les retourner ? Dans le premier cas j'ai une ou deux idées mais je ne sais pas trop si c'est à la BDD de faire ça. Le résultat sera un peu alambiqué pour quelque chose que du code ferait très bien.

Dans le deuxième cas ce n'est pas vraiment mieux. Je suppose qu'une procédure stoquée serait pas mal si le serveur les supporte. On pourrait avoir le détail des tables (du moins les colonnes impliquées) ?
Sivrît est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2007, 18h12   #3
Membre éclairé
 
Avatar de jota5450
 
Jota Alves
Inscription : janvier 2006
Messages : 263
Détails du profil
Informations personnelles :
Nom : Jota Alves
Âge : 36

Informations forums :
Inscription : janvier 2006
Messages : 263
Points : 303
Points : 303
slt...

Possible? peut-etre. avec une procedure...

Mais je te conseille de le faire sur le soft....

Demander au sgbd de faire un truc pareil me semble louche...



edit: message sans reponses pendant a peut pres 2 heures .... et d´un coup 2 messages au meme moment...
jota5450 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2007, 08h45   #4
Membre éclairé
 
Avatar de Linio
 
Inscription : octobre 2005
Messages : 427
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 427
Points : 304
Points : 304
C'est ce que je me suis dit pour le code, mais je ne voyais pas comment faire, mais maintenant j'ai un peu plus vision de la chose niveau soft (php), donc je vais plutôt le faire comme ça.

Pour le SQRT je l'ai mis en seconde condition du WHERE avec en première juste des < et >, pour accélérer le traitement.

Merci.
__________________
Linio
Linio 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 05h26.


 
 
 
 
Partenaires

Hébergement Web