اطلب طاولتين بنفس الحقل في كل طاولة ، mysql ، classic asp

-1

أحاول طلب بيانات من جدولين لعرضها في قائمة واحدة أيضًا استنادًا إلى المعرفات من جدول ثالث.

يحتوي الجدول 3 على معرّفات للجدولين الآخرين.

جدول التخصيص الإلكتروني

عيد ، سيد ، عيد

5 ، 1234 ، فارغة

5 ، فارغ ، 1234

الجدولان 1 و 2 هما جدولان لبيانات متشابهة.

جدول i_status

iid، status

1234 ، مكتمل

1235 ، مكتمل

1236 ، غير مكتمل

جدول s_status

سيدي ، الوضع

1234 ، مكتمل

1235 ، غير مكتملة

1237 ، غير كامل

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")

حتى الآن يمكنني الحصول على البيانات من قاعدة البيانات ولكن من الواضح أنه يأمر الجدول ب أولاً ثم ج الثاني. أحتاج هذه مرتبة حسب الانضمام.

العائدين حاليًا (الجدول = I أو S ، معرف السجل = 1234 ، الحالة = مكتمل أو غير مكتمل):

I: 1234: مكتمل

I: 1235: مكتمل

الأول: 1236: غير كامل

S: 1234: مكتمل

S: 1235: غير مكتملة

S: 1237: غير مكتملة

أحاول الحصول على:

I: 1234: مكتمل

S: 1234: مكتمل

I: 1235: مكتمل

S: 1235: غير مكتملة

الأول: 1236: غير كامل

S: 1237: غير مكتملة

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

أي مؤشرات في الاتجاه الصحيح تحظى بتقدير كبير؟ شكر

1 إجابة

0

إليك محاولتي.

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 إلخ. لذلك لا يتعين علينا كتابتها.

:مؤلف
فوق
قائمة طعام