我正在连接到具有多个表的SQL服务器
作为一个例子,假设有2个表:
5, apple
,12,eggs
apple, $4
,eggs, $5
,oranges, $12
我想编写一个select
命令,可以将这些数据链接在一起,类似于:
SELECT id, name
FROM names
UNION
SELECT price
FROM prices where name = **name from the first bit**
返回的结果如下:
5, apple, $4
12, eggs, $5
橘子不会被退回,因为它不在名单表中。
有一点背景知识:我最初的计划是首先获取名称然后遍历它们,为每个名称创建一个新查询以获得价格。
然而,这将使用C#实现,如果当前在同一连接上,Visual Studio将不允许打开第二个查询
更改为类似于我上面概述的方法似乎是实现我想要的更好的方式(更少查询,更整洁等),但欢迎其他建议
答案 0 :(得分:3)
这是一个JOIN,而不是UNION
$arrContextOptions["http"] = array(
"method" => "DELETE",
"header" => "Authorization: Basic NGEwMGZmMjItY2NkNy0xMWUzLTk5ZDUtMDAwYzI5NDBlNjJj\r\nContent-type: application/json",
"content" => "",
"ignore_errors" => true
);
$response = file_get_contents("https://onesignal.com/api/v1/notifications/{notificationId}?app_id={appId}", false, stream_context_create($arrContextOptions)));
答案 1 :(得分:1)
UNION将两个或多个查询的结果合并到一个结果集中,该结果集包含属于联合中所有查询的所有行。并且您需要INNER JOIN来组合来自两个(或更多)表的记录:
SELECT n.id,
n.name,
p.price
FROM names n
INNER JOIN prices p
ON n.name = p.name --or id