【发布时间】:2017-03-28 15:44:00
【问题描述】:
请告诉我如何对包含两个表 client 和 appointment 的数据库运行查询以输出 JSON 格式
{
"id": "1",
"app1": null,
"app2": null,
"app3":[
"cname": "John",
"clastname": "Doe",
"cemail": "john@doe.com",
"cphone": "604",
],
"app4":[
"cname": "Mark",
"clastname": "Martini",
"cemail": "mark@martini.com",
"cphone": "778",
]
}
如您所见,当appx 字段为空时,我需要获取null 并加载client 表数据,其中appx = cilentid
这是我的桌子
CREATE TABLE Client (
id INT(6),
cname VARCHAR(30) NOT NULL,
clastname VARCHAR(30) NOT NULL,
cemail VARCHAR(50),
cphone VARCHAR(50)
);
INSERT INTO Client
(`id`, `cname`, `clastname`, `cemail`, `cphone`)
VALUES
(25, 'John', 'Doe', 'john@doe.com', '604'),
(60 ,'Mark', 'Martini', 'mark@martini.com', '778')
;
CREATE TABLE appointments (
id INT(6),
app1 INT(6) DEFAULT NULL,
app2 INT(6) DEFAULT NULL,
app3 INT(6) DEFAULT NULL,
app4 INT(6) DEFAULT NULL
);
INSERT INTO appointments
(`id`, `app1`, `app2`, `app3`, `app4`)
VALUES
(1,null,null,null,60),
(2,25,null,null,null)
;
【问题讨论】:
-
您是否有一个可以为您提供所需结果的有效 MySQL 查询?您的约会表的设计方式是否有原因?
-
感谢您的回复,但我需要这样设计。我的意思是
appointmentapp1 实际上是9-10而app2 是10-11等等。我找不到更好的方法来处理这个问题。 -
如果创建约会类型表
(appointment_id, start_time, end_time),将当前约会表更改为关联表(appointment_id, client_id)。这样你就可以有任何没有。约会而不是当前的限制 4。在当前结构下,如果您需要添加其他约会类型,则需要在约会表中添加另一列,不推荐。向表中添加行然后向其添加列更容易。 -
我一天要预约 10 次,所以我觉得最好把预约放在一张桌子上
-
您仍然可以使用我建议的架构来做到这一点。如果你改变没有。从 10 到 15 的约会,那么你需要添加更多的列,其中大部分都是 NULL。