У меня две таблицы. Одна из них - таблица запросов , которая содержит все типы запросов, а другая - query_insert , которая содержит только запись для вставки запроса. Как показано ниже:

    **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 is содержит сегодняшнюю дату.

Пожалуйста, помогите мне. Спасибо.

0
Kushagra Shakya 24 Ноя 2014 в 11:52

5 ответов

Лучший ответ

Вам необходимо объединить две таблицы по атрибуту, который их связывает, 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
GHugo 24 Ноя 2014 в 08:56

Попробуй это :

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
B F 24 Ноя 2014 в 08:54

Попробуй это:

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
Joe Taras 24 Ноя 2014 в 08:55

Удалите один из «&& query.current_status = 'Fresh'», чтобы проверить, действительно ли это предложение даты не работает.

Как только вы проверите это, убедитесь, что ваша переменная и ваш столбец имеют дату, а не дату и время. если столбец - datetime, то вместо того, чтобы сделать его = $ сегодня, сделайте его диапазоном, таким образом insert_date> = $ today и insert_date <= завтра <

0
Flying Turtle 24 Ноя 2014 в 08:59

Измените свой запрос следующим образом:

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
h3dgh 24 Ноя 2014 в 09:35