寻找一种从select语句的后半部分中排除select语句变量的方法

时间:2014-03-06 20:44:42

标签: php sql arrays

我正在寻找一种方法来从数据库中选择前三名中的用户,然后是前三名,包括前三名,不包括之前选择的前三名。这是代码:

  

$ strSQL =“SELECT id FROM”.USERS_TABLE。“ut,”。usER_MATCH_TABLE。“umt           WHERE“.implode('AND',$ where)。”AND ut.id = umt.id_user AND(ut.a ='$ a1'或ut.b ='$ b1'或ut.c ='$ c1'或者ut.d ='$ d1'或者ut.e ='$ e1'或者ut.f ='$ f1'或者ut.g ='$ g1'或者ut.h ='$ h1'或者ut.i = '$ i1'或者ut.j ='$ j1'或者ut.k ='$ k1'或者ut.l ='$ l1'或者ut.m ='$ m1'或者ut.n ='$ n1'或者ut.o ='$ o1'或者ut.p ='$ p1'或者ut.q ='$ q1'或者ut.r ='$ r1'或者ut.s ='$ s1'或者ut.t =' $ t1'或者ut.u ='$ u1'或者ut.v ='$ v1'或者ut.w ='$ w1'或者ut.x ='$ x1'或者ut.y ='$ y1'或者ut .z ='$ z1'或ut.aa ='$ aa1'或ut.ab ='$ ab1'或ut.ac ='$ ac1'或ut.ad ='$ ad1'或ut.ae ='$ ae1'或ut.af ='$ af1'或ut.ag ='$ ag1'或ut.ah ='$ ah1')AND(ut.a ='$ a2'或ut.b ='$ b2'OR ut.c ='$ c2'或ut.d ='$ d2'或ut.e ='$ e2'或ut.f ='$ f2'或ut.g ='$ g2'或ut.h =' $ h2'或者ut.i ='$ i2'或者ut.j ='$ j2'或者ut.k ='$ k2'或者ut.l ='$ l2'或者ut.m ='$ m2'或者ut .n ='$ n2'或者ut.o ='$ o2'或者ut.p ='$ p2'或者ut.q ='$ q2'或者ut.r ='$ r2'或者ut.s ='$ s2'或者ut.t ='$ t2'或者ut.u ='$ u2'或者ut.v ='$ v2'或者ut.w ='$ w2'或者ut.x ='$ x2'或者ut。 y ='$ y2'或者ut.z ='$ z2'或者ut.aa ='$ aa2'或者ut.ab ='$ ab2'或者ut.ac ='$ ac2'或者ut.ad ='$ ad2 '或者ut.ae ='$ ae2'O R ut.af ='$ af2'或ut.ag ='$ ag2'或ut.ah ='$ ah2'或ut.a ='$ a1'或ut.b ='$ b1'或ut.c = '$ c1'或ut.d ='$ d1'或ut.e ='$ e1'或ut.f ='$ f1'或ut.g ='$ g1'或ut.h ='$ h1'OR ut.i ='$ i1'或ut.j ='$ j1'或ut.k ='$ k1'或ut.l ='$ l1'或ut.m ='$ m1'或ut.n =' $ n1'或者ut.o ='$ o1'或者ut.p ='$ p1'或者ut.q ='$ q1'或者ut.r ='$ r1'或者ut.s ='$ s1'或者ut .t ='$ t1'或ut.u ='$ u1'或ut.v ='$ v1'或ut.w ='$ w1'或ut.x ='$ x1'或ut.y ='$ y1'或者ut.z ='$ z1'或者ut.aa ='$ aa1'或者ut.ab ='$ ab1'或者ut.ac ='$ ac1'或者ut.ad ='$ ad1'或者ut。 ae ='$ ae1'或ut.af ='$ af1'或ut.ag ='$ ag1'或ut.ah ='$ ah1')“;       $ rs = $ dbconn->执行($ strSQL);

while ($array = $rs->FetchRow()) {
    $ids[] = $array[0];
}

第一组查询是AND(ut.a ='$ a1'or等),第二部分是在和之后,并包括前三,四和五的第一部分。我想要排除前五名中排名前三的东西。有任何想法吗?我想到了阵列,但复杂性超出了我的范围。提前致谢

1 个答案:

答案 0 :(得分:0)

对于我的生活,我不能理解你的查询在做什么,但是你要解决的一般性问题的方法是两个有2个查询,并结合结果。可能的事情如下:

SELECT id
FROM ".USERS_TABLE." ut,
    ".USER_MATCH_TABLE." umt
WHERE ".implode(' AND ', $where). "
    AND ut.id = umt.id_user
    AND (
        ut.a = '$a1'
        OR ut.b = '$b1'
        OR ut.c = '$c1'
        OR ut.d = '$d1'
        OR ut.e = '$e1'
        OR ut.f = '$f1'
        OR ut.g = '$g1'
        OR ut.h = '$h1'
        OR ut.i = '$i1'
        OR ut.j = '$j1'
        OR ut.k = '$k1'
        OR ut.l = '$l1'
        OR ut.m = '$m1'
        OR ut.n = '$n1'
        OR ut.o = '$o1'
        OR ut.p = '$p1'
        OR ut.q = '$q1'
        OR ut.r = '$r1'
        OR ut.s = '$s1'
        OR ut.t = '$t1'
        OR ut.u = '$u1'
        OR ut.v = '$v1'
        OR ut.w = '$w1'
        OR ut.x = '$x1'
        OR ut.y = '$y1'
        OR ut.z = '$z1'
        OR ut.aa = '$aa1'
        OR ut.ab = '$ab1'
        OR ut.ac = '$ac1'
        OR ut.ad = '$ad1'
        OR ut.ae = '$ae1'
        OR ut.af = '$af1'
        OR ut.ag = '$ag1'
        OR ut.ah = '$ah1'
        )
UNION ALL
SELECT id
FROM ".USERS_TABLE." ut,
    ".USER_MATCH_TABLE." umt
WHERE ".implode(' AND ', $where). "
    AND ut.id = umt.id_user
    AND(
        ut.a = '$a2'
        OR ut.b = '$b2'
        OR ut.c = '$c2'
        OR ut.d = '$d2'
        OR ut.e = '$e2'
        OR ut.f = '$f2'
        OR ut.g = '$g2'
        OR ut.h = '$h2'
        OR ut.i = '$i2'
        OR ut.j = '$j2'
        OR ut.k = '$k2'
        OR ut.l = '$l2'
        OR ut.m = '$m2'
        OR ut.n = '$n2'
        OR ut.o = '$o2'
        OR ut.p = '$p2'
        OR ut.q = '$q2'
        OR ut.r = '$r2'
        OR ut.s = '$s2'
        OR ut.t = '$t2'
        OR ut.u = '$u2'
        OR ut.v = '$v2'
        OR ut.w = '$w2'
        OR ut.x = '$x2'
        OR ut.y = '$y2'
        OR ut.z = '$z2'
        OR ut.aa = '$aa2'
        OR ut.ab = '$ab2'
        OR ut.ac = '$ac2'
        OR ut.ad = '$ad2'
        OR ut.ae = '$ae2'
        OR ut.af = '$af2'
        OR ut.ag = '$ag2'
        OR ut.ah = '$ah2'
        OR ut.a = '$a1'
        OR ut.b = '$b1'
        OR ut.c = '$c1'
        OR ut.d = '$d1'
        OR ut.e = '$e1'
        OR ut.f = '$f1'
        OR ut.g = '$g1'
        OR ut.h = '$h1'
        OR ut.i = '$i1'
        OR ut.j = '$j1'
        OR ut.k = '$k1'
        OR ut.l = '$l1'
        OR ut.m = '$m1'
        OR ut.n = '$n1'
        OR ut.o = '$o1'
        OR ut.p = '$p1'
        OR ut.q = '$q1'
        OR ut.r = '$r1'
        OR ut.s = '$s1'
        OR ut.t = '$t1'
        OR ut.u = '$u1'
        OR ut.v = '$v1'
        OR ut.w = '$w1'
        OR ut.x = '$x1'
        OR ut.y = '$y1'
        OR ut.z = '$z1'
        OR ut.aa = '$aa1'
        OR ut.ab = '$ab1'
        OR ut.ac = '$ac1'
        OR ut.ad = '$ad1'
        OR ut.ae = '$ae1'
        OR ut.af = '$af1'
        OR ut.ag = '$ag1'
        OR ut.ah = '$ah1'
        )