按每个表中的相同字段排序2个表,mysql,classic asp

kx5bkwkv  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(374)

我正试图根据第三个表的id,将两个表中的数据排序显示在一个列表中。
表3包含其他两个表的id。

  1. e_allocation table
  2. ------------------
  3. eid, sid, iid
  4. 5, 1234, NULL
  5. 5, NULL, 1234

表1和表2是类似数据的表格。

  1. i_status table
  2. --------------
  3. iid, status
  4. 1234, Complete
  5. 1235, Complete
  6. 1236, Not Complete
  1. s_status table
  2. --------------
  3. sid, status
  4. 1234, Complete
  5. 1235, Not Complete
  6. 1237, Not Complete
  1. objCon.Execute ("SELECT a.sid, a.iid, b.status AS istats, c.status AS sstats
  2. FROM e_allocation a LEFT JOIN i_status b ON a.iid=b.iid LEFT JOIN s_status c
  3. ON a.sid=c.sid WHERE a.eid = '5' ORDER BY b.status Desc, c.status Desc")

因此,目前我可以从数据库中获取数据,但它显然先排序表b,然后再排序表c。我需要订购这些。
正在返回 (Table=I or S, Record ID=1234, Status = Complete or Not Complete) :

  1. I:1234:Complete
  2. I:1235:Complete
  3. I:1236:Not complete
  4. S:1234:Complete
  5. S:1235:Not Complete
  6. S:1237:Not Complete

我想得到:

  1. I:1234:Complete
  2. S:1234:Complete
  3. I:1235:Complete
  4. S:1235:Not Complete
  5. I:1236:Not complete
  6. S:1237:Not Complete
  1. while not objDb.EOF
  2. sid = objDb("id")
  3. iid = objDb("iid")
  4. if sid <>"" then datlst = datlst &"S:"& sid &":"&objDb("sstats")&",<BR>"
  5. if iid <>"" then datlst = datlst &"I:"& iid &":"&objDb("istats")&",<BR>"
  6. objDb.MoveNext
  7. Wend
  8. response.write datlst

有没有任何指向正确方向的指示?谢谢

kcrjzv8t

kcrjzv8t1#

这是我的尝试。

  1. create table e_allocation (eid int, sid int, iid int);
  2. insert into e_allocation select 5, 1234, NULL;
  3. insert into e_allocation select 5, NULL, 1234;
  4. insert into e_allocation select 5, 1235, NULL;
  5. insert into e_allocation select 5, NULL, 1235;
  6. insert into e_allocation select 5, 1236, NULL;
  7. insert into e_allocation select 5, NULL, 1236;
  8. create table i_status (iid int, status varchar(25));
  9. insert into i_status select 1234, 'Complete';
  10. insert into i_status select 1235, 'Complete';
  11. insert into i_status select 1236, 'Not Complete';
  12. create table s_status (sid int, status varchar(25));
  13. insert into s_status select 1234, 'Complete';
  14. insert into s_status select 1235, 'Not Complete';
  15. insert into s_status select 1237, 'Not Complete';
  16. SELECT
  17. case when a.sid is null then 'I' else 'S' end as iors,
  18. ifnull(a.sid,a.iid) as id,
  19. ifnull(b.status,c.status) as status
  20. FROM e_allocation a LEFT JOIN i_status b ON a.iid=b.iid LEFT JOIN s_status c
  21. ON a.sid=c.sid
  22. WHERE a.eid = '5' and (b.status is not null or c.status is not null)
  23. ORDER BY id, iors

下次请提供create table等语句,这样我们就不必输入它们了。

展开查看全部

相关问题