我有2张桌子
orders
+----+-------+--------+------------+
| id | email | status | date |
+----+-------+--------+------------+
| 1 | | 0 | 1427953986 |
| 2 | | 0 | 1427954771 |
| 5 | | 0 | 1427957427 |
+----+-------+--------+------------+
price
+----+----+-----+--------+----+-----+------+-------+------------+
| id | wd | bts | family | r | tlv | kids | user | date |
+----+----+-----+--------+----+-----+------+-------+------------+
| 1 | 0 | 0 | 0 | 75 | 65 | 50 | int | 1425894693 |
| …Run Code Online (Sandbox Code Playgroud) 给定以下 2 个表 a、b:
ID job
1 farmer
2 physician
3 bank clerk
Run Code Online (Sandbox Code Playgroud)
bID ID lang job
1 1 en farmer
2 2 en physician
3 3 en bank clerk
4 2 de Arzt
5 1 fr paysan
Run Code Online (Sandbox Code Playgroud)
SELECT a.ID, a.job, b.job FROM a LEFT JOIN b ON a.ID=b.ID WHERE b.lang='de'
Run Code Online (Sandbox Code Playgroud)
a.ID a.job b.job
1 farmer -
2 physician Arzt
3 bank clerk -
Run Code Online (Sandbox Code Playgroud)
2 physician Arzt
Run Code Online (Sandbox Code Playgroud)
有什么问题LEFT JOIN?我需要一些 (()) 吗?
在定义中;
SELECT *
from T1, T2
Run Code Online (Sandbox Code Playgroud)
Cross Join:如果T1有N行,T2有M行,结果集会有N×M行。
如果 T2 没有行,则 JOIN 的结果也没有行。
但是,我想要 N 行(来自 T1),我该怎么办?
有什么建议吗?
注意:我想要笛卡尔积,表之间没有共享列。
不确定问题的措辞是否正确,但这里有一个架构示例:
CREATE TABLE TabA (Id INT NOT NULL, PRIMARY KEY (Id));
CREATE TABLE TabB (
Id INT NOT NULL,
TabAId INT,
PRIMARY KEY (Id),
FOREIGN KEY (TabAId) REFERENCES TabA(Id)
)
CREATE TABLE TabC (
Id INT NOT NULL,
TabAId INT,
PRIMARY KEY (Id),
FOREIGN KEY (TabAId) REFERENCES TabA(Id)
)
Run Code Online (Sandbox Code Playgroud)
我需要做的是选择或(或两者)中的记录引用的TabA.Id位置。如果我以编程方式翻译这个:TabA.IdTabBTabC
type B = { Id : int }
type C = { Id : int }
type A = { ItemsB : B list ; …Run Code Online (Sandbox Code Playgroud) 我有一个这样的查询:
SELECT *
FROM table_1
LEFT JOIN table_2
ON table_1.ID = table_2.ID
INNER JOIN table_3
ON table_1.ID = table_3.ID
Run Code Online (Sandbox Code Playgroud)
SQL如何处理这个连接?SQL 是否先连接表 1 和表 2,然后将这个新的超级表与表 3 连接?或者它会向另一个方向移动?
我正在尝试在 SQL Server 上完成此操作。带有数据的最简单的表结构如下所示。
Table: Blog
BlogID | Title
-------+--------
1 | FirstBlog
23 | Pizza
Table: User
UserID | Name
-------+-----------
123 | james
444 | John
Table: UserBlogMapping
UserBlogMappingID | BlogID | UserID
------------------+--------+------
1 | 1 | 123
Run Code Online (Sandbox Code Playgroud)
我想在一个 SQL 查询中获取FormID和UserBlogMappingID。如果提供UserID的不在映射表中,则返回零,否则返回有效的userBlogMappingID。我正在尝试运行以下查询,但它不正确。
SELECT
B.BlogID,
BUM.BlogUserMappingID
FROM
Blog AS B
LEFT JOIN BlogUserMapping AS BUM ON B.BlogID = BUM.BlogID
WHERE
(B.BlogID = 23) -- it exists in the table
AND BUM.userID …Run Code Online (Sandbox Code Playgroud) 我有两个要加入的表
|id |profit|
| 1 | 1234 |
| 2 | 1345 |
| 4 | 1454 |
| 5 | 1254 |
Run Code Online (Sandbox Code Playgroud)
和另一张桌子
| id | x loss | y loss |
| 2 | 34312 | 4354 |
| 3 | 35614 | 4365 |
| 4 | 36615 | 4321 |
Run Code Online (Sandbox Code Playgroud)
并结合两者,这将是我想要的结果
| id | profit | x loss | y loss |
| 1 | 1234 | Null | Null |
| 2 | 1345 | …Run Code Online (Sandbox Code Playgroud) 我有这两个查询,它们从四个表中提取数据:
select files.id, files.name, dirs.dir
from files
inner join dirs on dirs.id = files.idDir
where files.id = 45
select label
from labels
inner join labels_files on labels_files.idLabel = labels.id
where labels_files.idFile = 45
Run Code Online (Sandbox Code Playgroud)
第一个查询返回 1 行。第二个查询返回 1 个或多个 row/s
我的目标是在结果集中获得一个查询和一行。说:
--------------------------------------------------
45 | test.txt | /home | label1, label2, labeln |
--------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
我想我应该尝试派生表,但一直在尝试无济于事。
我有两个数据集
FEES PAYMENTS
CrsCode InstNo FEE Regno CRSCODE Instno Payment
CA1 -2 100 R1 CA1 -2 100
CA1 -1 200 R1 CA1 -1 200
CA1 1 200 R1 CA1 1 200
CA1 2 300
DESIRED OUTPUT
REGNO CRSCODE INSTNO FEE PAID DIFF
R1 CA1 -2 100 100 0
R1 CA1 -1 200 200 0
R1 CA1 1 200 200 0
R1 CA1 2 300 0 300
OUTPUT I AM GETTING
REGNO CRSCODE INSTNO FEE PAID DIFF
R1 CA1 -2 100 …Run Code Online (Sandbox Code Playgroud) 我有两个表,规范化:
table1
id quality product_id
1 100 1
2 100 2
3 10 4
4 50 2
Run Code Online (Sandbox Code Playgroud)
和
table2
product_id product material
1 tinder metal
2 gold metal
3 timber wood
4 stone rock
Run Code Online (Sandbox Code Playgroud)
如何获得第一张桌子上的所有金属物品?我试过
select sum(quality) from table1 join table2 on table2.material = 'metal';
Run Code Online (Sandbox Code Playgroud)
但似乎不正确(720),应该是250。
请帮助纠正以下代码。
select *
from openquery(DRUPAL,
'select o.*
from (
select
max(vid),
nid
from content_type_irb_application_form
group by nid
) i
inner join content_type_irb_application_form o on o.nid = i.nid and o.vid = i.vid
')
Run Code Online (Sandbox Code Playgroud)
消息 7321,级别 16,状态 2,第 1 行 准备查询“select o.* from (select max(vid), nid from content_type_irb_application_form group by nid) i inner join content_type_irb_application_form o on o.nid = i 时发生错误。 nid 和 o.vid = i.vid”,用于针对链接服务器“DRUPAL”的 OLE DB 提供程序“MSDASQL”执行。
join ×11
sql-server ×5
mariadb ×1
mariadb-10.3 ×1
ms-access ×1
mysql ×1
null ×1
postgresql ×1
where ×1