Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

extraire plusieurs lignes d'une colonne

11 réponses
Avatar
kikilegeni
Bonjour,
je voudrais extraire plusieurs lignes d'une table et les mettre en colonne.
je possède 4 tables.
compte
ecriture
mouvement
t_loc

dans la table t_loc, j'ai 3 champs qui s'appelle 1nom, 2compt_asso, 3compt_asso1
dans la table mouvement j'ai 5 champs qui s'appelle ecriture,Compte,debit,credit
dans la table ecriture 3 champs, numéro,date, libellé
dans la table compte, j'ai 3 champs qui s'appelle n°, intitulé, type

la table ecriture est relié avec la table mouvement par le champ ecriture.numéro et mouvement.ecriture.
La table compte est relié avec la table mouvement par le champ compte.n° et mouvement.compte

mon problème est que je voudrais faire apparaître en même temps de la table mouvement tous les champs qui comporte le n° de la table t_loc du champ compt_asso et compt_asso1.

J'arrive à le faire pour un champ ou l'autre mais pas les deux en même temps.

Merci d'avance.

1 réponse

1 2
Avatar
kikilegeni
Michel__D a écrit le 24/01/2009 à 15h01 :
Bonjour,

kikilegeni a écrit :
Michel__D a écrit le 22/01/2009 à 11h15 :
Oups une erreur.

La 1ère requête nommé "rq_mouvement" :

SELECT T3.datEcr, T4.*
FROM ecriture AS T3 INNER JOIN mouvement AS T4 ON T3.numEcr = T4.ecriture;

Et la requête qui donne le résultat :

SELECT T1.nom, T1.[prénom],
T4.compte, T4.debit, T4.credit, T4.datEcr,
T6.compte, T6.debit, T6.credit, T6.datEcr,
T1.loyer, T1.charges
FROM [rq_mouvement] AS T4 RIGHT JOIN ([t_locataire] AS T1 LEFT JOIN
[rq_mouvement] AS T6
ON T1.[compte_asso1] = T6.compte) ON T4.compte = [T1.compte_asso]
ORDER BY T6.compte;



bonjour,
désolé il y a eu raté, j'ai répondu hier soir mais
cela n'est pas affiché.
Bon ce n'est pas grave.

bon voilà voici la sql de "rq_mouvement":

SELECT T3.datEcr, T4.*
FROM ecriture AS T3 INNER JOIN mouvement AS T4 ON T3.numEcr = T4.ecriture;

voici la sql de "rq_michel" (provient de son auteur):

SELECT T1.nom, T1.prénom, T1.loyer, T1.charges, T4.compte, T4.debit,
T4.credit,
T4.datEcr, T6.compte, T6.debit, T6.credit, T6.datEcr
FROM rq_mouvement AS T4 RIGHT JOIN (t_locataire AS T1 LEFT JOIN rq_mouvement
AS
T6 ON T1.[compte_asso1] = T6.compte) ON T4.compte = T1.compte_asso
ORDER BY T4.compte, T4.datEcr;

j'ai du enlever les [ ] de la dernière ligne car cela ne fonctionnait
pas.

par contre je me suis aperçu qu'il multiplie la T4 avec la T6.

et puis un nouveau problème vient de se greffer:

Si je veux faire un état de la requête "rq_michel"

j'ai le message d'erreur suivant :

l'assistance ne peut afficher l'aperçuavant impression de votre
état, peut être
parce qu'un autre utilisateur a ouvert une table source en mode exclusif.
votre
état sera ouvert en mode création.

quand j'essaye d'ouvrir l'état j'ai un autre message d'erreur:

le champ spécifié "T4.compte" peut désigner
plusieurs tables listées dans la
clause FROM de votre instruction SQL.

autre question : pourquoi vous renomme toujours les tables ?

Merci beaucoup.




J'ai pas pu répondre hier.

Pour simplifier il faudrait une clé primaire pour identifier chaque
ligne
de la table [t_locataire], ensuite faire une requête pour chaque compte
([compte_asso] et [compte_asso1]) en gardant la clé primaire et ensuite
on peut combiner le contenu des deux requêtes via une jointure sur la
clé primaire.

Et je renomme toujours les table car en réduisant l'expression, celle-ci
devient plus lisible.


merci, je viens seulement de finir.

J'ai fait comme cela j'ai gardé mes deux requêtes rq_locataire4 et rq_locataire7.

puis j'ai refait une requête finale :

SELECT rq_locataire4.nom, rq_locataire4.prénom, rq_locataire4.loyer, rq_locataire4.charges, rq_locataire4.compte, rq_locataire4.SommeDecredit, rq_locataire4.SommeDedebit, rq_locataire7.compte, rq_locataire7.SommeDedebit, rq_locataire7.SommeDecredit, rq_locataire4.moi, rq_locataire7.mois
FROM rq_locataire4 INNER JOIN rq_locataire7 ON (rq_locataire4.mois = rq_locataire7.mois) AND (rq_locataire4.nom = rq_locataire7.nom)
ORDER BY rq_locataire7.mois, rq_locataire4.compte;

encore merci beaucoup, car j'ai encore mieux compris le SQL.
J'ai du faire une double jointure pour éviter la multiplication des données.

merci tout plein Michel
1 2