SÉLECTIONNEZ une seule rangée de table enfant pour chaque ligne dans la table parent
Je suis en train d'essayer d'obtenir qu'une seule ligne de la table enfant pour chaque ligne parent avec enfant des champs inclus, j'ai essayé avec GRUOP, mais sans succès 🙁
Voici ma première SÉLECTIONNEZ
SELECT pID, lastname
FROM parent
LEFT JOIN
(SELECT cID, pID, phone, company, title FROM child) as child
ON parent.pID = child.pID
Voici les tables de strcture
CREATE TABLE parent (
pID Counter(1,1) PRIMARY KEY,
firstname VarChar(24) DEFAULT '',
lastname VarChar(20) DEFAULT ''
);
CREATE TABLE child (
cID Counter(1,1) PRIMARY KEY,
pID int DEFAULT '0',
phone VarChar(16) DEFAULT '',
company VarChar(24) DEFAULT '',
title VarChar(24) DEFAULT '',
address TEXT
);
Ce Moteur de base de données utilisez-vous?
mettre la structure de votre table et nous en dire plus clairement ce que vous voulez vraiment
Microsoft Access MDB fichier!
mettre la structure de votre table et nous en dire plus clairement ce que vous voulez vraiment
Microsoft Access MDB fichier!
OriginalL'auteur meYnot | 2012-05-07
Vous devez vous connecter pour publier un commentaire.
"obtenir qu'une seule ligne de la table enfant pour chaque ligne parent avec enfant des champs inclus"
Qui sonne comme le
child
tableau peut avoir plus d'une ligne pour le mêmepID
valeur. Et vous voulez un seulchild
ligne pour chaquepID
.Rejoindre
GROUP BY
requête retour à lachild
table pour récupérer les autres colonnes pour chaque ciblecID
valeur. Enregistrez cette requête sousqryChild
.Enfin, pour inclure
lastname
valeurs, rejoignez leparent
table àqryChild
.OriginalL'auteur HansUp
Vous n'avez pas l'état de votre SGBD c'est donc un standard ANSI solution:
Les lignes qui vous définir comme la "première ligne" est à vous. Il n'est pas comme une "première" ligne à moins que vous trier les lignes - qu'est ce que la partie
order by cid
dans la clause partition. Donc, si vous voulez quelque chose de différent, comme la "première ligne", vous avez besoin de le changer.Btw: il n'est pas nécessaire de sélectionner toutes les colonnes de la table enfant si vous ne les utilisez pas.
MS n'est pas un Accès conforme à la norme ANSI SGBD. Veuillez indiquer votre SGBD la prochaine fois. Je n'aurais pas répondu si vous avait dit que tout de suite
Je suis un débutant et je ne essayer d'obtenir plus de balises, mais je n'ai pas reconnu [ms-access] tho!
OriginalL'auteur a_horse_with_no_name
que vous aurez à remplacer
avec quelque chose en retour qu'une seule ligne par pid. Ce que le bon choix dépend de votre requriements. Les simples est
group by
:mais les différentes colonnes proviennent de différentes lignes de sorte que vous voudrez probablement quelque chose comme "la première ligne" comment mettre en œuvre qui dépend du SGBD que vous utilisez, veuillez donc ajouter cette information à votre question.
OriginalL'auteur Jens Schauder
bien que la technique est que si vous sélectionnez un élément dans la requête externe vous pouvez l'utiliser dans la sous requête
Désolé, j'ai changé de Groupe par la CID de PID qui a été mon erreur de vérifier à nouveau, il sera parfait
Grâce Raheel, l'erreur est dans [(SÉLECTIONNEZ le nom DU parent OÙ pID = ParentID) LastName] ParentID est pas reconnue
J'ai modifié la requête, vous avez raison, il doit avoir été id n'est pas parent de l'id dans la sous requête
OriginalL'auteur Muhammad Raheel