SQL d'une Requête UNION avec des champs Supplémentaires dans les Résultats
J'ai une requête SQL qui fonctionne bien sauf que je tiens à apporter les résultats d'une autre colonne dans la première db avec elle. C'est ce que j'ai actuellement:
SELECT parts1.PART_NBR, parts1.NIIN
FROM parts1
WHERE parts1.PART_NBR='$pn'
UNION
SELECT parts2.REFERENCE_NUMBER, parts2.NIIN
FROM parts2
WHERE parts2.REFERENCE_NUMBER='$pn'
C'est ce que j'ai fondamentalement voulez (bien sûr, cela ne marchera pas):
SELECT parts1.PART_NBR, parts1.NIIN, parts1.ANOTHER_FIELD
FROM parts1
WHERE parts1.PART_NBR='$pn'
UNION
SELECT parts2.REFERENCE_NUMBER, parts2.NIIN
FROM parts2
WHERE parts2.REFERENCE_NUMBER='$pn'
Comment puis-je écrire la requête de sorte qu'il fait la même chose mais en réalité, ramène le champ supplémentaire dans les résultats?
OriginalL'auteur Erik | 2011-05-01
Vous devez vous connecter pour publier un commentaire.
Créer un champ vide, retourner NULL
EDIT:
De votre commentaire que vous voyez les résultats que
Les premiers résultats sont à venir à partir de la table
parts1
le deuxième à partir de laparts2
, le videName
champs où vous êtes de retourNULL
.De l'information que vous avez donné je ne vois pas pourquoi vous utilisez un
UNION
pour obtenir les résultats de ces deux tableaux car ils semblent contenir les mêmes informations à l'exception du premier tableau a aussi leName
champ.Serait-il pas mieux
JOIN
les tables sur le Cadre de Référence/numéro de commande pour sélectionner le nom?EDIT:
Comme vous l'avez dit dans votre commentaire, déjà vous procurer un
DISTINCT
ensemble de résultats en raison de l'utilisationUNION
. Avec leNULL
champ les lignes ne sont plus uniques et la requête renvoie toutes les lignes.Je l'ai dit dans un commentaire que je ne vois pas ce que l'actuelle déclaration de l'UNION est fait pour vous car il semble que les mêmes informations sont les deux tables. C'est cette requête que ce que vous nous avez dit?
Intéressant, la base de données utilisez-vous (SQL Server, MySQL, etc)?
Numéro de la pièce: 21223 NIIN: 008194914 Nom: CONDENSATEUR Numéro de la Pièce: 21223 NIIN: 011241926 Nom: DISSIPATEUR de CHALEUR Numéro de la Pièce: 21223 NIIN: 003901600 Nom: COUTEAU Numéro de la Pièce: 21223 NIIN: 003901600 Nom: Numéro de la Pièce: 21223 NIIN: 008194914 Nom: Numéro de la Pièce: 21223 NIIN: 011241926 Nom:
Essayez d'exécuter uniquement la deuxième partie de la
UNION
requête pour voir si vous obtenez des résultats avec un champ supplémentaire avecNULL
. J'ai remarqué que vous utilisez le même paramètre pour lesWHERE
clause dans les deux requêtes, même si elles ont des noms différents:PART_NBR
&REFERENCE_NUMBER
. Est-ce intentionnel?Ils sont nommés différemment dans les 2 tables
OriginalL'auteur Tony
OriginalL'auteur Mikael Eriksson
Vous avez à faire correspondre les colonnes, cependant, vous pouvez placer un "faux" colonne de la deuxième qui revient
null
ou quelle que soit la valeur par défaut que vous souhaitez.OriginalL'auteur Dustin Laine
Simple comme ci-dessous:
Vous avez juste besoin de s'adapter à un espace réservé dans la seconde requête pour correspondre au champ supplémentaire emplacement de la première.
Pouvez-vous donner un exemple de ce que votre sortie attendue voudrais?
Numéro de la pièce: 21223 NIIN: 008194914 Nom: CONDENSATEUR Numéro de la Pièce: 21223 NIIN: 011241926 Nom: DISSIPATEUR de CHALEUR Numéro de la Pièce: 21223 NIIN: 003901600 Nom: COUTEAU
changé ma requête ci-dessus pour accueillir
OriginalL'auteur cmutt78