[SQL] Pb de formulation de requetes

NAIMA -  
 NAIMA -
Bonjour ,
Je n’arrive pas à trouver une solution pour mon problème et J’ai vraiment besoin de votre aide.Avec tous mes remerciements
Voilà mon Problème : J ’ai deux tables TAB_A, TAB_B

La Table TAB_A

Enreg. Champ1 | Champ2 | … …..
Ligne Element_pere1 A …….
Ligne Element_pere1 B …….
Ligne Element_pere1 C …….
Ligne Element_pere1 D …….
Ligne Element_pere1 E …….
Ligne Element_pere1 F …….
Ligne Element_pere1 G …….
Ligne Element_pere1 H …….
…… ……. ………. ……….
Ligne Element_pere2 L …….
Ligne Element_pere2 B …….
Ligne Element_pere2 J …….
Ligne Element_pere2 D …….
Ligne Element_pere2 K …….
Ligne Element_pere2 F …….
Ligne Element_pere2 G …….
Ligne Element_pere2 N …….
…… ……. ………. ……….
Ligne Element_pere3 A …….
Ligne Element_pere3 Q …….
Ligne Element_pere3 R …….
Ligne Element_pere3 O …….
Ligne Element_pere3 E …….
Ligne Element_pere3 F …….
Ligne Element_pere3 G …….
Ligne Element_pere3 H …….
…… ……. ………. ……….

Ligne Element_pere4 A …….
Ligne Element_pere4 S …….
Ligne Element_pere4 C …….
Ligne Element_pere4 D …….
Ligne Element_pere4 T …….
Ligne Element_pere4 F …….
Ligne Element_pere4 W …….
Ligne Element_pere4 H …….
…… ……. ………. ……….



La Table TAB_B


Enreg. Champ1 | Champ2 | … …..
Ligne------- A -----------1 …….
Ligne------- D -----------2 …….
Ligne------- F -----------3 …….
Ligne------- H -----------4 …….


L’objectif de ma requette :

Chercher tous les ELEMENT_PERE de TAB_A qui contiennent toutes les lignes de TAB_B
(c’ est à dire TAB_B est inclus dans L’Element_pere de TAB_A )
dans mon exemple la Requête doit me retourner le résultat SUIVANT :

ELEMENT_Pere1
ELEMENT_Pere4
Parceque c’est 2 Elements inclurent toutes les lignes de table TAB_B


JE VOUS REMERCIE ENORMEMENT
BONNE JOURNNEE A TOUS
A voir également:

2 réponses

zenon Messages postés 729 Statut Membre 180
 
alors là, franchement, je comprends pas...

Tu as une relation un à plusieurs entre Tab_B et Tab_A? ou l'inverse (comme le laisserait penser l'appellation "champ_père)?

Que veut dire "c’est 2 Elements inclurent toutes les lignes de table TAB_B"?


D'après ton exemple on devrait pouvoir écrire:
SELECT TAB_A.* FROM TAB_A Where Champ2="A";

Si tu pouvais réexpliquer, ce serait peut-être plus clair...
0
NAIMA
 
Tout d'abord merci de m'avoir répondu.
Voila , je vais m'expliquer autrement:

j'ai par exemple un JOURNAL de 10 pages chaque page contient plusieurs lignes ) et je dois trouver les pages qui contiennent 4 lignes biens detérminées "Ligne10,ligne12,ligne20,ligne24" , si une ligne manque ds une page alors cette dernière ne dois pas être selectionée...
dans ce cas la TAB_A est représenté comme suit
pag1----- ligne1
pag1----- ligne2
-
pag1----- ligne10
-
pag1----- ligne24
pag1----- ligne25
pag1----- ligne26
.
.
pag2----- ligne1
.
pag2----- ligne10
pag2----- ligne11
pag2----- ligne12
-
pag2----- ligne24
pag2----- ligne25
pag2----- ligne26

.
.

LA TAB_B doit contenir les 4 ligne
Ligne 10
Ligne 12
Ligne 20
Ligne 24


Dans mon objectif : le resultat sera seulement la page 2 parceque
elle contient les 4 lignes de la tab_B.
///////////////////////////////////////////////
Objectif; chercher les pages de la tab_A qui inclus toutes les ligne de la tab_B
Voila; merci d'avance
0
zenon Messages postés 729 Statut Membre 180
 
C'est pour un exercice, j'imagine.

Avec la structure actuelle, je ne pense pas pouvoir t'aider. Je ne vois pas comment formuler l'expression WHERE: un même enregistrement ne peut pas contenir toutes les données.

En revanche, en fractionnant les tables:
On crée une table "pages" dont les enregistrements sont liés par une relation un à plusieurs à une table "lignes"

J'ai une astuce :

SELECT Count(T_Pages.N°Page) AS CompteDeN°Page, T_Lignes.Ligne
FROM T_Pages INNER JOIN T_Lignes ON T_Pages.N°P = T_Lignes.N°P
GROUP BY T_Lignes.Ligne
HAVING (((Count(T_Pages.N°Page))=3) AND ((T_Lignes.Ligne)="12" Or (T_Lignes.Ligne)="13" Or (T_Lignes.Ligne)="14"));

Le Count fait appel au nombre des critères recherchés.

A priori, je ne vois pas d'autre solution mais je ne suis pas un pro...
0
NAIMA
 
Merci "Zenon" pour la solution , vous m'avez donné une idée
j'ai fais la requette suivante :

SELECT N°Page,count(*) FROM tab_A, tab_B
where tab_A.N°LIGNE = tab_B.N°LIGNE
and .....
HAVING count(*) = (SELECT count(*) from tab_B)
GROUP by N°Page


est ça marche, le seul problème , il prends plus de temps...

Merci Beaucoup
0