需要提示来自2个表的MySQL查询

时间:2014-01-31 01:48:14

标签: php mysql

我需要一个小提示......我有2张桌子。 表1从外部api获取数据。 表2是静态的。

表1:数据

id name status ratio import_id
1  Test online  3     1
2  Tee  online  2     1
3  Test online  1     2
4  Tee  online  0.01  2
5  Test offline 4     3
6  Teee online  3     3
7  Teet online  1     3

表2:名称

id name tag active
1  Test t1  1
2  Tee  t2  1
3  Teee t3  0
4  Teet t4  1

我想从表名中获取ID(写入另一个表并执行cronjob)

说明表1: id - AI 名字 - 只是名字 status - 如果条目处于活动状态 比率 - 主要选择 import_id - 我每隔10分钟从json导入(~40个条目)

我得到了什么:

$result = mysql_query("
SELECT 
  import_id 
FROM 
  data 
ORDER BY id DESC LIMIT 1");

while($raw = mysql_fetch_object($result))
{
$the_id =  $raw->import_id;
echo $the_id;
}

现在我已经获得了ID并尝试获得最高比率的最新条目(import_id):

$c_result = mysql_query("
SELECT
  name, active, ratio, import_id 
FROM 
  data 
WHERE 
  active = '1' AND import_id = '$the_id' 
ORDER BY 
  ratio DESC LIMIT 1");

while($chosen = mysql_fetch_object($c_result))
{
$the_c = $chosen->name;
echo $the_c;
}

这完美无瑕。 但有可能api提供的40个条目中的一个不在我的表格中#34;名称"或者它没有标记为"活跃"。

但我只想要

的names.id
  • 比率最高的名称
  • 在我的表格中#34;名称"
  • 在"名称"
  • 中标记为有效
  • 并且data.status在线
  • 来自最新的导入(最高import_id)

并将其写入另一个表格。

我考虑过LEFT JOIN,但是如果名字不在表格中,那么#34;名称"我得到一个空洞的结果。

你有正确方向的暗示吗?

1 个答案:

答案 0 :(得分:1)

SELECT d.name, active, ratio, import_id 
FROM data d
JOIN names n ON d.name = n.name
WHERE import_id = (SELECT import_id
                   FROM data
                   ORDER BY id DESC
                   LIMIT 1)
AND d.status = 'online'
AND n.active = 1
ORDER BY ratio DESC
LIMIT 1 

DEMO