在每个 table、mysql、经典 asp 中按相同字段排序 2 tables
Order 2 tables by the same field in each table, mysql, classic asp
我正在尝试根据来自第三个 table.
的 ID 对 2 table 中的数据进行排序以显示在一个列表中
Table 3 包含其他 2 table 的 ID。
e_allocation table
------------------
eid, sid, iid
5, 1234, NULL
5, NULL, 1234
table1和2是table相似的数据。
i_status table
--------------
iid, status
1234, Complete
1235, Complete
1236, Not Complete
s_status table
--------------
sid, status
1234, Complete
1235, Not Complete
1237, Not Complete
objCon.Execute ("SELECT a.sid, a.iid, b.status AS istats, c.status AS sstats
FROM e_allocation a LEFT JOIN i_status b ON a.iid=b.iid LEFT JOIN s_status c
ON a.sid=c.sid WHERE a.eid = '5' ORDER BY b.status Desc, c.status Desc")
所以目前我可以从数据库中获取数据,但显然它首先命令 table b,然后是 c。我需要按加入顺序订购的这些。
目前返回(Table=I or S, Record ID=1234, Status = Complete or Not Complete)
:
I:1234:Complete
I:1235:Complete
I:1236:Not complete
S:1234:Complete
S:1235:Not Complete
S:1237:Not Complete
我正在尝试获取:
I:1234:Complete
S:1234:Complete
I:1235:Complete
S:1235:Not Complete
I:1236:Not complete
S:1237:Not Complete
while not objDb.EOF
sid = objDb("id")
iid = objDb("iid")
if sid <>"" then datlst = datlst &"S:"& sid &":"&objDb("sstats")&",<BR>"
if iid <>"" then datlst = datlst &"I:"& iid &":"&objDb("istats")&",<BR>"
objDb.MoveNext
Wend
response.write datlst
非常感谢任何正确方向的指示?
谢谢
这是我的尝试。
create table e_allocation (eid int, sid int, iid int);
insert into e_allocation select 5, 1234, NULL;
insert into e_allocation select 5, NULL, 1234;
insert into e_allocation select 5, 1235, NULL;
insert into e_allocation select 5, NULL, 1235;
insert into e_allocation select 5, 1236, NULL;
insert into e_allocation select 5, NULL, 1236;
create table i_status (iid int, status varchar(25));
insert into i_status select 1234, 'Complete';
insert into i_status select 1235, 'Complete';
insert into i_status select 1236, 'Not Complete';
create table s_status (sid int, status varchar(25));
insert into s_status select 1234, 'Complete';
insert into s_status select 1235, 'Not Complete';
insert into s_status select 1237, 'Not Complete';
SELECT
case when a.sid is null then 'I' else 'S' end as iors,
ifnull(a.sid,a.iid) as id,
ifnull(b.status,c.status) as status
FROM e_allocation a LEFT JOIN i_status b ON a.iid=b.iid LEFT JOIN s_status c
ON a.sid=c.sid
WHERE a.eid = '5' and (b.status is not null or c.status is not null)
ORDER BY id, iors
下次请提供 CREATE TABLE 等语句,这样我们就不必输入它们了。
我正在尝试根据来自第三个 table.
的 ID 对 2 table 中的数据进行排序以显示在一个列表中Table 3 包含其他 2 table 的 ID。
e_allocation table
------------------
eid, sid, iid
5, 1234, NULL
5, NULL, 1234
table1和2是table相似的数据。
i_status table
--------------
iid, status
1234, Complete
1235, Complete
1236, Not Complete
s_status table
--------------
sid, status
1234, Complete
1235, Not Complete
1237, Not Complete
objCon.Execute ("SELECT a.sid, a.iid, b.status AS istats, c.status AS sstats
FROM e_allocation a LEFT JOIN i_status b ON a.iid=b.iid LEFT JOIN s_status c
ON a.sid=c.sid WHERE a.eid = '5' ORDER BY b.status Desc, c.status Desc")
所以目前我可以从数据库中获取数据,但显然它首先命令 table b,然后是 c。我需要按加入顺序订购的这些。
目前返回(Table=I or S, Record ID=1234, Status = Complete or Not Complete)
:
I:1234:Complete
I:1235:Complete
I:1236:Not complete
S:1234:Complete
S:1235:Not Complete
S:1237:Not Complete
我正在尝试获取:
I:1234:Complete
S:1234:Complete
I:1235:Complete
S:1235:Not Complete
I:1236:Not complete
S:1237:Not Complete
while not objDb.EOF
sid = objDb("id")
iid = objDb("iid")
if sid <>"" then datlst = datlst &"S:"& sid &":"&objDb("sstats")&",<BR>"
if iid <>"" then datlst = datlst &"I:"& iid &":"&objDb("istats")&",<BR>"
objDb.MoveNext
Wend
response.write datlst
非常感谢任何正确方向的指示? 谢谢
这是我的尝试。
create table e_allocation (eid int, sid int, iid int);
insert into e_allocation select 5, 1234, NULL;
insert into e_allocation select 5, NULL, 1234;
insert into e_allocation select 5, 1235, NULL;
insert into e_allocation select 5, NULL, 1235;
insert into e_allocation select 5, 1236, NULL;
insert into e_allocation select 5, NULL, 1236;
create table i_status (iid int, status varchar(25));
insert into i_status select 1234, 'Complete';
insert into i_status select 1235, 'Complete';
insert into i_status select 1236, 'Not Complete';
create table s_status (sid int, status varchar(25));
insert into s_status select 1234, 'Complete';
insert into s_status select 1235, 'Not Complete';
insert into s_status select 1237, 'Not Complete';
SELECT
case when a.sid is null then 'I' else 'S' end as iors,
ifnull(a.sid,a.iid) as id,
ifnull(b.status,c.status) as status
FROM e_allocation a LEFT JOIN i_status b ON a.iid=b.iid LEFT JOIN s_status c
ON a.sid=c.sid
WHERE a.eid = '5' and (b.status is not null or c.status is not null)
ORDER BY id, iors
下次请提供 CREATE TABLE 等语句,这样我们就不必输入它们了。