J ai besoin d'aide sur une requete pas =E9vidente : s=E9lectionner les=20
documents de chaque zone, secteur, locaux et postetravail :
en sachant que les table docXXX repr=E9sentent les tables de liaison de=20
doc et XXX. Cependant, si aucun document n'est pr=E9sent, je voudrais tou=
t=20
de meme "l'architecture" de la zone
O=F9 Doc est =E9videmment une seule et meme table.
J'=E9tais parti sur ca, mais ca ne marche pas : les secteurs sans doc ont=
=20
le doc de la zone associ=E9e.
SELECT Zones.NomZone, Secteurs.NomSecteur, Locaux.NomLocal,=20
PosteTravail.NomPosteTravail, Doc.NomDoc
FROM Zones
left outer join Secteurs on Secteurs.IDZones =3D Zones.IDZones
left outer join Locaux on Locaux.IDSecteurs =3D Secteurs.IDSecteurs
left outer join PosteTravail on PosteTravail.IDLocaux =3D Locaux.IDLocaux=
left outer join DocZone on DocZone.IdZone =3D Zones.IDZones
left outer join DocSecteur on DocSecteur.IdSecteur =3D Secteurs.IDSecteur=
s
left outer join DocLocaux on DocLocaux.IdLocaux =3D Locaux.IDLocaux
left outer join DocPoste on DocPoste.IdPoste =3D PosteTravail.IDPosteTrav=
ail
left join Doc on (Doc.IdDoc =3D DocZone.IdDoc
or Doc.IdDoc =3D DocSecteur.IdDoc
or Doc.IdDoc =3D DocLocaux.IdDoc
or Doc.IdDoc =3D DocPoste.IdDoc)
J'ai =E9galement tent=E9 de faire un where (pour les or) sans plus de suc=
c=E8s=20
: les zones sans doc disparraissaient
FROM Zones Z LEFT OUTER JOIN Secteurs S ON Z.IDZones = S.IDZones
LEFT OUTER JOIN Locaux L ON S.IDSecteurs = L.IDSecteurs
LEFT OUTER JOIN PosteTravail PT ON L.IDLocaux = PT.IDLocaux
WHERE Machin = 'truc' OR Machin IS NULL
ou encore intégrer la clause WHERE dans les prédicats ON dans ce cas inutile de préciser le IS NULL
A +
Manu Pavy a écrit:
Bonjour,
J ai besoin d'aide sur une requete pas évidente : sélectionner les documents de chaque zone, secteur, locaux et postetravail : en sachant que les table docXXX représentent les tables de liaison de doc et XXX. Cependant, si aucun document n'est présent, je voudrais tout de meme "l'architecture" de la zone
J'étais parti sur ca, mais ca ne marche pas : les secteurs sans doc ont le doc de la zone associée.
SELECT Zones.NomZone, Secteurs.NomSecteur, Locaux.NomLocal, PosteTravail.NomPosteTravail, Doc.NomDoc FROM Zones left outer join Secteurs on Secteurs.IDZones = Zones.IDZones left outer join Locaux on Locaux.IDSecteurs = Secteurs.IDSecteurs left outer join PosteTravail on PosteTravail.IDLocaux = Locaux.IDLocaux
left outer join DocZone on DocZone.IdZone = Zones.IDZones left outer join DocSecteur on DocSecteur.IdSecteur = Secteurs.IDSecteurs left outer join DocLocaux on DocLocaux.IdLocaux = Locaux.IDLocaux left outer join DocPoste on DocPoste.IdPoste = PosteTravail.IDPosteTravail
left join Doc on (Doc.IdDoc = DocZone.IdDoc or Doc.IdDoc = DocSecteur.IdDoc or Doc.IdDoc = DocLocaux.IdDoc or Doc.IdDoc = DocPoste.IdDoc)
J'ai également tenté de faire un where (pour les or) sans plus de succès : les zones sans doc disparraissaient
Merci beaucoup pour aide,
Manu
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
FROM Zones Z
LEFT OUTER JOIN Secteurs S
ON Z.IDZones = S.IDZones
LEFT OUTER JOIN Locaux L
ON S.IDSecteurs = L.IDSecteurs
LEFT OUTER JOIN PosteTravail PT
ON L.IDLocaux = PT.IDLocaux
WHERE Machin = 'truc' OR Machin IS NULL
ou encore intégrer la clause WHERE dans les prédicats ON dans ce cas inutile de
préciser le IS NULL
A +
Manu Pavy a écrit:
Bonjour,
J ai besoin d'aide sur une requete pas évidente : sélectionner les
documents de chaque zone, secteur, locaux et postetravail :
en sachant que les table docXXX représentent les tables de liaison de
doc et XXX. Cependant, si aucun document n'est présent, je voudrais tout
de meme "l'architecture" de la zone
J'étais parti sur ca, mais ca ne marche pas : les secteurs sans doc ont
le doc de la zone associée.
SELECT Zones.NomZone, Secteurs.NomSecteur, Locaux.NomLocal,
PosteTravail.NomPosteTravail, Doc.NomDoc
FROM Zones
left outer join Secteurs on Secteurs.IDZones = Zones.IDZones
left outer join Locaux on Locaux.IDSecteurs = Secteurs.IDSecteurs
left outer join PosteTravail on PosteTravail.IDLocaux = Locaux.IDLocaux
left outer join DocZone on DocZone.IdZone = Zones.IDZones
left outer join DocSecteur on DocSecteur.IdSecteur = Secteurs.IDSecteurs
left outer join DocLocaux on DocLocaux.IdLocaux = Locaux.IDLocaux
left outer join DocPoste on DocPoste.IdPoste = PosteTravail.IDPosteTravail
left join Doc on (Doc.IdDoc = DocZone.IdDoc
or Doc.IdDoc = DocSecteur.IdDoc
or Doc.IdDoc = DocLocaux.IdDoc
or Doc.IdDoc = DocPoste.IdDoc)
J'ai également tenté de faire un where (pour les or) sans plus de succès
: les zones sans doc disparraissaient
Merci beaucoup pour aide,
Manu
--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
FROM Zones Z LEFT OUTER JOIN Secteurs S ON Z.IDZones = S.IDZones
LEFT OUTER JOIN Locaux L ON S.IDSecteurs = L.IDSecteurs
LEFT OUTER JOIN PosteTravail PT ON L.IDLocaux = PT.IDLocaux
WHERE Machin = 'truc' OR Machin IS NULL
ou encore intégrer la clause WHERE dans les prédicats ON dans ce cas inutile de préciser le IS NULL
A +
Manu Pavy a écrit:
Bonjour,
J ai besoin d'aide sur une requete pas évidente : sélectionner les documents de chaque zone, secteur, locaux et postetravail : en sachant que les table docXXX représentent les tables de liaison de doc et XXX. Cependant, si aucun document n'est présent, je voudrais tout de meme "l'architecture" de la zone
J'étais parti sur ca, mais ca ne marche pas : les secteurs sans doc ont le doc de la zone associée.
SELECT Zones.NomZone, Secteurs.NomSecteur, Locaux.NomLocal, PosteTravail.NomPosteTravail, Doc.NomDoc FROM Zones left outer join Secteurs on Secteurs.IDZones = Zones.IDZones left outer join Locaux on Locaux.IDSecteurs = Secteurs.IDSecteurs left outer join PosteTravail on PosteTravail.IDLocaux = Locaux.IDLocaux
left outer join DocZone on DocZone.IdZone = Zones.IDZones left outer join DocSecteur on DocSecteur.IdSecteur = Secteurs.IDSecteurs left outer join DocLocaux on DocLocaux.IdLocaux = Locaux.IDLocaux left outer join DocPoste on DocPoste.IdPoste = PosteTravail.IDPosteTravail
left join Doc on (Doc.IdDoc = DocZone.IdDoc or Doc.IdDoc = DocSecteur.IdDoc or Doc.IdDoc = DocLocaux.IdDoc or Doc.IdDoc = DocPoste.IdDoc)
J'ai également tenté de faire un where (pour les or) sans plus de succès : les zones sans doc disparraissaient
Merci beaucoup pour aide,
Manu
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
FROM Zones Z LEFT OUTER JOIN Secteurs S ON Z.IDZones = S.IDZones
LEFT OUTER JOIN Locaux L ON S.IDSecteurs = L.IDSecteurs
LEFT OUTER JOIN PosteTravail PT ON L.IDLocaux = PT.IDLocaux
WHERE Machin = 'truc' OR Machin IS NULL
ou encore intégrer la clause WHERE dans les prédicats ON dans ce ca s inutile de préciser le IS NULL
A +
Salut et merci de t intéresser à mon pb. Le pb dans ta solution est que Doc n'apparait pas. Ou j ai pas compris. Qu est ce que machin ? Si je fais une jointure de Doc pour chacune des tables associées, il faut lui mettre un alias différent et du coup, il ne retourne pas un champ (nomDoc par exemple), mais autant qu il y a de jointures.
Peut etre ai je mal expliqué mon pb. (un petit dessin ne fait jamais de mal : http://manupavy.free.fr/relDoc.gif
Le but étant d'avoir l'arborescence zones, secteurs, locaux, posteTravail et chacun de leur Doc associés.
Merci pour votre aide,
Manu
PS : le schéma est du merise simplifié, (relation inversé par rappo rt à UML)
FROM Zones Z
LEFT OUTER JOIN Secteurs S
ON Z.IDZones = S.IDZones
LEFT OUTER JOIN Locaux L
ON S.IDSecteurs = L.IDSecteurs
LEFT OUTER JOIN PosteTravail PT
ON L.IDLocaux = PT.IDLocaux
WHERE Machin = 'truc' OR Machin IS NULL
ou encore intégrer la clause WHERE dans les prédicats ON dans ce ca s
inutile de préciser le IS NULL
A +
Salut et merci de t intéresser à mon pb.
Le pb dans ta solution est que Doc n'apparait pas. Ou j ai pas compris.
Qu est ce que machin ?
Si je fais une jointure de Doc pour chacune des tables associées, il
faut lui mettre un alias différent et du coup, il ne retourne pas un
champ (nomDoc par exemple), mais autant qu il y a de jointures.
Peut etre ai je mal expliqué mon pb. (un petit dessin ne fait jamais de
mal :
http://manupavy.free.fr/relDoc.gif
Le but étant d'avoir l'arborescence zones, secteurs, locaux,
posteTravail et chacun de leur Doc associés.
Merci pour votre aide,
Manu
PS : le schéma est du merise simplifié, (relation inversé par rappo rt à UML)
FROM Zones Z LEFT OUTER JOIN Secteurs S ON Z.IDZones = S.IDZones
LEFT OUTER JOIN Locaux L ON S.IDSecteurs = L.IDSecteurs
LEFT OUTER JOIN PosteTravail PT ON L.IDLocaux = PT.IDLocaux
WHERE Machin = 'truc' OR Machin IS NULL
ou encore intégrer la clause WHERE dans les prédicats ON dans ce ca s inutile de préciser le IS NULL
A +
Salut et merci de t intéresser à mon pb. Le pb dans ta solution est que Doc n'apparait pas. Ou j ai pas compris. Qu est ce que machin ? Si je fais une jointure de Doc pour chacune des tables associées, il faut lui mettre un alias différent et du coup, il ne retourne pas un champ (nomDoc par exemple), mais autant qu il y a de jointures.
Peut etre ai je mal expliqué mon pb. (un petit dessin ne fait jamais de mal : http://manupavy.free.fr/relDoc.gif
Le but étant d'avoir l'arborescence zones, secteurs, locaux, posteTravail et chacun de leur Doc associés.
Merci pour votre aide,
Manu
PS : le schéma est du merise simplifié, (relation inversé par rappo rt à UML)
Fred BROUARD - SQLpro
Il faudrait que tu livre la descriptio de tes tables sous formes d'ordres SQL du genre : CREATE TABLE... cele nous permettra de connaitre les colonnes les clefs...
Sans cela pas d'aide possible. On ne parle pas efficacement dans le vide !
FROM Zones Z LEFT OUTER JOIN Secteurs S ON Z.IDZones = S.IDZones
LEFT OUTER JOIN Locaux L ON S.IDSecteurs = L.IDSecteurs
LEFT OUTER JOIN PosteTravail PT ON L.IDLocaux = PT.IDLocaux
WHERE Machin = 'truc' OR Machin IS NULL
ou encore intégrer la clause WHERE dans les prédicats ON dans ce cas inutile de préciser le IS NULL
A +
Salut et merci de t intéresser à mon pb. Le pb dans ta solution est que Doc n'apparait pas. Ou j ai pas compris. Qu est ce que machin ? Si je fais une jointure de Doc pour chacune des tables associées, il faut lui mettre un alias différent et du coup, il ne retourne pas un champ (nomDoc par exemple), mais autant qu il y a de jointures.
Peut etre ai je mal expliqué mon pb. (un petit dessin ne fait jamais de mal : http://manupavy.free.fr/relDoc.gif
Le but étant d'avoir l'arborescence zones, secteurs, locaux, posteTravail et chacun de leur Doc associés.
Merci pour votre aide,
Manu
PS : le schéma est du merise simplifié, (relation inversé par rapport à UML)
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
Il faudrait que tu livre la descriptio de tes tables sous formes d'ordres SQL du
genre :
CREATE TABLE...
cele nous permettra de connaitre les colonnes les clefs...
Sans cela pas d'aide possible.
On ne parle pas efficacement dans le vide !
FROM Zones Z
LEFT OUTER JOIN Secteurs S
ON Z.IDZones = S.IDZones
LEFT OUTER JOIN Locaux L
ON S.IDSecteurs = L.IDSecteurs
LEFT OUTER JOIN PosteTravail PT
ON L.IDLocaux = PT.IDLocaux
WHERE Machin = 'truc' OR Machin IS NULL
ou encore intégrer la clause WHERE dans les prédicats ON dans ce cas
inutile de préciser le IS NULL
A +
Salut et merci de t intéresser à mon pb.
Le pb dans ta solution est que Doc n'apparait pas. Ou j ai pas compris.
Qu est ce que machin ?
Si je fais une jointure de Doc pour chacune des tables associées, il
faut lui mettre un alias différent et du coup, il ne retourne pas un
champ (nomDoc par exemple), mais autant qu il y a de jointures.
Peut etre ai je mal expliqué mon pb. (un petit dessin ne fait jamais de
mal :
http://manupavy.free.fr/relDoc.gif
Le but étant d'avoir l'arborescence zones, secteurs, locaux,
posteTravail et chacun de leur Doc associés.
Merci pour votre aide,
Manu
PS : le schéma est du merise simplifié, (relation inversé par rapport à UML)
--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Il faudrait que tu livre la descriptio de tes tables sous formes d'ordres SQL du genre : CREATE TABLE... cele nous permettra de connaitre les colonnes les clefs...
Sans cela pas d'aide possible. On ne parle pas efficacement dans le vide !
FROM Zones Z LEFT OUTER JOIN Secteurs S ON Z.IDZones = S.IDZones
LEFT OUTER JOIN Locaux L ON S.IDSecteurs = L.IDSecteurs
LEFT OUTER JOIN PosteTravail PT ON L.IDLocaux = PT.IDLocaux
WHERE Machin = 'truc' OR Machin IS NULL
ou encore intégrer la clause WHERE dans les prédicats ON dans ce cas inutile de préciser le IS NULL
A +
Salut et merci de t intéresser à mon pb. Le pb dans ta solution est que Doc n'apparait pas. Ou j ai pas compris. Qu est ce que machin ? Si je fais une jointure de Doc pour chacune des tables associées, il faut lui mettre un alias différent et du coup, il ne retourne pas un champ (nomDoc par exemple), mais autant qu il y a de jointures.
Peut etre ai je mal expliqué mon pb. (un petit dessin ne fait jamais de mal : http://manupavy.free.fr/relDoc.gif
Le but étant d'avoir l'arborescence zones, secteurs, locaux, posteTravail et chacun de leur Doc associés.
Merci pour votre aide,
Manu
PS : le schéma est du merise simplifié, (relation inversé par rapport à UML)
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
Manu Pavy
Fred BROUARD - SQLpro a fait part de :
Il faudrait que tu livre la descriptio de tes tables sous formes d'ordres SQL du genre : CREATE TABLE... cele nous permettra de connaitre les colonnes les clefs...
Sans cela pas d'aide possible. On ne parle pas efficacement dans le vide !
A +
Finalement, je me suis tourné vers vers une autre solution applicative (plus conviviale d'ailleurs) et qui fait appel à des requetes simplifié es.
Merci à toi,
Manu
Fred BROUARD - SQLpro a fait part de :
Il faudrait que tu livre la descriptio de tes tables sous formes
d'ordres SQL du genre :
CREATE TABLE...
cele nous permettra de connaitre les colonnes les clefs...
Sans cela pas d'aide possible.
On ne parle pas efficacement dans le vide !
A +
Finalement, je me suis tourné vers vers une autre solution applicative
(plus conviviale d'ailleurs) et qui fait appel à des requetes simplifié es.
Il faudrait que tu livre la descriptio de tes tables sous formes d'ordres SQL du genre : CREATE TABLE... cele nous permettra de connaitre les colonnes les clefs...
Sans cela pas d'aide possible. On ne parle pas efficacement dans le vide !
A +
Finalement, je me suis tourné vers vers une autre solution applicative (plus conviviale d'ailleurs) et qui fait appel à des requetes simplifié es.