关于MYSQL的多表查询问题(含2个同名表)
我在mysql里面执行这个sql语句总是当机,高手来救命啊~
SELECT b.AccountId,d.Description,d.Meaning,c.LevelCode,c.Value FROM PrismaLog a INNER JOIN PrismaLog b ON a.AccountId=b.AccountId AND ON a.Date=b.Date AND ON a.ServerId=b.ServerId INNER JOIN LogValue c ON b.LogId=c.LogId INNER JOIN LogMap d ON c.LevelCode=d.LevelCode WHERE a.ServerId= 'sip13379 ' AND (TO_DAYS(a.Date)-TO_DAYS( '2007-7-1 ')> = 0) AND (TO_DAYS(a.Date)-TO_DAYS( '2007-7-13 ') <= 0) AND a.RecordId= '1040 ' AND b.RecordId= '1030.0 ' AND d.RecordId= '1030 '
说明:前两个联合的表是同一个表。我的目的是:
1。从PrismaLog 中找到RecordId= '1040 '、ServerId= 'sip13379 '且日期在 '2007-7-1 '到 '2007-7-13 '之间的记录集A,
2。然后根据A的AccountId再查找PrismaLog 中AccountId=A.AccountId且RecordId= '1030.0 ' 的记录集B,
3。然后根据B的LogId查找PrismaLog x、LogValue y与 LogMap z的联表,其中x.LogId=B.LogId,y.LogId=x.LogId,z.LogValue=y.LogValue,z.RecordId= '1030 '
最后希望能得到PrismaLog.AccountId,LogMap.Description,LogMap.Meaning,LogValue.LevelCode,LogValue.Value 。
另外也试了select c1 from t1 where c2 in (select c2 from t2 where ...)的嵌套以及select p.c1,q.c2 from t1 p,t2 q where p.c3=... and q.c6=...这样的语句。。。都是当机。不知道哪里出了问题。憋了好几天了。。。好人来帮忙啊。。
------解决方案-------------------- select LogId from PrismaLog where AccountId in
(select AccountId from PrismaLog where RecordId= '1040 'and ServerId= 'sip13379 '且日期在 '2007-7-1 '到 '2007-7-13 ') and RecordId= '1030.0 '
以上就是b出来的logid
然后你再把x,y,z的关联继续写就是了
ps:你的第三个逻辑,我没看明白