Je sais que c'est probablement très basique, mais j'ai dû dormir quand ils ont appris ça à l'école :)
Si j'ai deux tables, comme ceci par exemple:
Tableau 1 (produits)
id
name
price
agentid
Tableau 2 (agent)
userid
name
email
Comment puis-je obtenir un ensemble de résultats de produits comprenant le nom et l'adresse de messagerie de l'agent, ce qui signifie que products.agentid = agent.userid
Merci pour vos réponses rapides, mais j'ai oublié WHERE
. Comment puis-je rejoindre par exemple SELECT WHERE price < 100
Edité pour supporter le filtre de prix
Vous pouvez utiliser la clause INNER JOIN
pour joindre ces tables. C'est fait comme ça:
select p.id, p.name as ProductName, a.userid, a.name as AgentName
from products p
inner join agents a on a.userid = p.agentid
where p.price < 100
Une autre façon de faire est d'utiliser une clause WHERE
:
select p.id, p.name as ProductName, a.userid, a.name as AgentName
from products p, agents a
where a.userid = p.agentid and p.price < 100
Notez que dans le second cas, vous créez un produit naturel de toutes les lignes des deux tables, puis vous filtrez le résultat. Dans le premier cas, vous filtrez directement le résultat tout en rejoignant la même étape. Le SGBD comprendra vos intentions (quelle que soit la façon dont vous choisirez de résoudre ce problème) et les traitera le plus rapidement possible.
Ceci est un INNER JOIN
très rudimentaire:
SELECT
products.name AS productname,
price,
agent.name AS agentname
email
FROM
products
INNER JOIN agent ON products.agentid = agent.userid
Je recommande de revoir la syntaxe et les concepts de base JOIN
. Voici un lien vers la documentation de Microsoft , bien que ce que vous avez ci-dessus soit assez universel comme SQL standard.
Notez que le INNER JOIN
suppose ici que chaque produit est associé à une agentid
qui n'est pas NULL. S'il existe NULL agentid
dans products
, utilisez plutôt LEFT OUTER JOIN
pour renvoyer même les produits sans agent.
Ceci est ma jointure pour des tables légèrement plus grandes dans Prod.Hope ça aide.
SELECT TOP 1000 p.[id]
,p.[attributeId]
,p.[name] as PropertyName
,p.[description]
,p.[active],
a.[appId],
a.[activityId],
a.[Name] as AttributeName
FROM [XYZ.Gamification.V2B13.Full].[dbo].[ADM_attributeProperty] p
Inner join [XYZ.Gamification.V2B13.Full].[dbo].[ADM_activityAttribute] a
on a.id=p.attributeId
where a.appId=23098;
select p.name productname, p.price, a.name as agent_name, a.email
from products p
inner join agent a on (a.userid = p.agentid)
select ProductName=p.[name]
, ProductPrice=p.price
, AgentName=a.[name]
, AgentEmail=a.email
from products p
inner join agent a on a.userid=p.agentid