2014-11-24 137 views
0

我有两个表。一个是查询包含所有类型查询的表,其中一个是query_insert其中只包含查询插入记录。 象下面这样:MYSQL从两个表中选择具有特定条件的值

**query**   **query_insert** 
    1 query_id   1 id 
    2 query_cons   2 query_id 
    3 title    3 *insert_date* 
    4 name    4 insert_time 
    5............. 
    ........... 
    ..... 
    9 *current_status* 
    10 return_date 

我想选择所有的查询,它们是具有CURRENT_STATUS新鲜和insert_date是今日(这是在query_insert)的查询。

我试过这个,但没有工作。

$result= mysql_query("SELECT query_insert.*, query.* 
         FROM query_insert,query 
         WHERE query_insert.insert_date=$today && 
          query.current_status='Fresh' "); 

在此查询中,$ today是变量包含today的日期。

请帮我一把。 谢谢。

回答

0

你需要加入你的两个表上进行链接,query_id属性。 你可以尝试这样的事情:

$result= mysql_query("SELECT query_insert.*, query.* 
         FROM query_insert 
          LEFT JOIN query 
            ON query.query_id = query_insert.query_id 
         WHERE query_insert.insert_date=$today && 
          query.current_status='Fresh' "); 
+0

谢谢。有用... :) – 2014-11-24 09:23:04

0

试试这个:

SELECT * FROM query q 
INNER JOIN query_insert qi ON q.query_id = qi.query_id 
WHERE insert_date = CURRENT_DATE() 
AND current_status = 'Fresh' 
0

试试这个:

SELECT * 
FROM query q 
JOIN query_insert i 
ON q.id = i.query_id 
WHERE q.current_status = 'Fresh' 
AND i.insert_date = now() 

或者,如果你有query_insert大约在同一查询更多行:

SELECT * 
FROM query q 
WHERE EXISTS(
    SELECT 'insert' 
    FROM query_insert i 
    WHERE q.id = i.query_id 
    AND i.insert_date = now() 
) 
AND q.current_status = 'Fresh' 
0

请更改您的查询作为以下:

SELECT query_insert.*, query.* 
FROM query_insert,query 
WHERE query_insert.insert_date = $today 
AND query.current_status='Fresh' 
AND query.query_id = query_insert.query_id 
0

删除其中一个“& & query.current_status ='Fresh'”以检查是否确实是不工作的日期子句。

一旦您验证确认您的变量和您的列都是日期而不是日期时间。如果该列是日期时间,那么不要使它=今天使它成为一个范围,因此insert_date> = $ today和insert_date < =明天<