Bonjour,
Je sollicite votre aide dans le cadre d'une réflexion sur un algorithme (script PHP).
J'ai une TABLE (Microsoft SQL Server 2008) "IDENTITE" constituée des colonnes suivantes :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 CREATE TABLE [IDENTITE]( [IDI_ID] [int] IDENTITY(1,1) NOT NULL, [PK] [IDI_F1] [varchar] NULL, [IDI_F2] [varchar](25) NULL, [IDI_M1] [varchar](25) NULL, [IDI_M2] [varchar](25) NULL, [IDI_FORMULA] [varchar](25) NULL, [IDI_NAME] [varchar](25) NULL )
La colonne "IDI_ID" est l'identifiant unique de la table (identity).
Les colonnes "IDI_F1", "IDI_F2", "IDI_M1", "IDI_M1" sont les parents potentiels de mon identifiant.
La colonne "IDI_FORMULA" est la combinaison des colonnes parents : IDI_F1.IDI_F2/IDI_M1.IDI_M2 ou IDI_F2.IDI_F1/IDI_M2.IDI_M1
La colonne "IDI_NAME" est un nom commun que l'on attribut à mon identifiant.
Objectif :
L'objectif du script est de rechercher si les parents passés en paramètres de mon script existe dans la table "IDENTITE", sachant qu'il faut tester toutes les combinaisons possibles, soit 8 avec au minimum deux parents et au maximum 4 parents.
Exemple :
Dans la table, j'ai la ligne suivante :
Je veux donc rechercher cette ligne mais les paramètres passés sont :IDI_ID : 198587 IDI_F1 : TITI IDI_F2 : TUTU IDI_M1 : TOTO IDI_M2 : TKTK IDI_FORMULA : TITI.TUTU/TOTO.TKTK IDI_NAME : JML
La formule est inversée donc je ne trouverai jamais ma ligne et pourtant elle existe bien.IDI_F1 : TUTU IDI_F2 : TITI IDI_M1 : TKTK IDI_M2 : TOTO IDI_FORMULA : TUTU.TITI/TKTK.TOTO
Je pensais donc pour un paramètre, tester 8 requêtes avec des wheres représentants les 8 combinaisons possibles ou sinon faire un where avec les 8 combinaisons imbriquées par un OR.
Sachant que la table fait environ 800 000 lignes et que la recherche peut contenir 1000 formules à identifier ... Je souhaiterai un peu de votre aide !
Si vous voulez plus de précisions, je me tiens à votre disposition.
Cordialement
Partager