MySQL使用不同表的字段对结果进行排序

时间:2009-02-03 12:58:03

标签: mysql sql

我有以下结构的3个表

    products
    {
        pid
        pname
        plocation...
    }

    services
    {
        s_id
        s_name
        s_location...
    }

    txn
    {
        tid
        pid...
    }

我使用以下查询来获取我需要的值。

    $dbquery = "SELECT DISTINCT products.pid AS id,
                   products.pname AS name,
                   products.p_desc AS description,
                   products.p_loc AS location,
                   products.category AS category,
                   products.p_uid AS userid,
                   products.add_date AS dateadded,
                   products.isaproduct AS whatisit
              FROM products
             WHERE products.pname
              LIKE '%".$keyword."%'
               AND category = '".$refine_value."'
             UNION
             SELECT DISTINCT services.s_id AS id,
                   services.s_name AS name,
                   services.s_desc AS description,
                   services.s_category AS category,
                   services.s_uid AS userid,
                   services.s_location AS location,
                   services.date_added AS dateadded,
                   services.isaservice AS whatisit
              FROM services
             WHERE services.s_name
              LIKE '%".$keyword."%'
               AND s_category = '".$refine_value."'

我需要通过获取上面查询中获得的txn表中的pid计数来对我选择的值进行排序。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

首先,使用参数化查询而不是像这样构建查询字符串。这困扰我。

但看起来你真正需要做的就是按照txn表中的pid列进行分组。

定义类似

的视图
SELECT pid, COUNT(tid) tid_count
FROM txn
GROUP BY pid

将其加入您的查询,然后按tid_count订购。