我有以下结构的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计数来对我选择的值进行排序。
我该怎么做?
答案 0 :(得分:1)
首先,使用参数化查询而不是像这样构建查询字符串。这困扰我。
但看起来你真正需要做的就是按照txn表中的pid列进行分组。
定义类似
的视图SELECT pid, COUNT(tid) tid_count
FROM txn
GROUP BY pid
将其加入您的查询,然后按tid_count订购。