2016-06-27 4 views
-1

누구나 쿼리에 어떤 문제가 있는지 말해 줄 수 있습니까? 날짜 조건을 따르지 않습니다. 그것은 모든 데이터를 반환하고 내가 언급 한 날짜보다 적은 데이터를 원한다. 브래킷을 제거하여MYSQL 날짜 시간 필드가있는 곳

SELECT `messages`.*, `user`.`firstname`, `user`.`lastname`, `user`.`organisation_name`, `user`.`type`, `user_info`.`profile_picture`, `user_info`.`logo`, `user`.`email` 
FROM (`messages`) JOIN 
    `user` 
    ON `user`.`user_id` = `messages`.`from_id` JOIN 
    `user_info` 
    ON `user_info`.`uid` = `messages`.`from_id` 
WHERE `messages`.`from_id` = '4' AND 
     `messages`.`to_id` = '24572' AND 
     `messages`.`time_sent` <= '2016-06-23 12:41:47' OR 
     `messages`.`from_id` = '24572' AND 
     `messages`.`to_id` = '4' AND 
    `messages`.`time_sent` <= '2016-06-23 12:41:47' 
ORDER BY `msg_id` DESC 
+1

무엇이 문제입니까? –

+0

오류 메시지를 공유하십시오 –

+0

날짜 조건을 따르지 않습니다 –

답변

0

시도 "("와 ")"

SELECT `messages`.*, `user`.`firstname`, `user`.`lastname`, `user`.`organisation_name`, `user`.`type`, `user_info`.`profile_picture`, `user_info`.`logo`, `user`.`email` 
FROM `messages` JOIN 
    `user` 
    ON `user`.`user_id` = `messages`.`from_id` JOIN 
    `user_info` 
    ON `user_info`.`uid` = `messages`.`from_id` 
WHERE `messages`.`from_id` = '4' AND 
     `messages`.`to_id` = '24572' AND 
     `messages`.`time_sent` <= '2016-06-23 12:41:47' OR 
     `messages`.`from_id` = '24572' AND 
     `messages`.`to_id` = '4' AND 
    `messages`.`time_sent` <= '2016-06-23 12:41:47' 
ORDER BY `msg_id` DES 

그리고 당신은 오류 메시지를 공유하고 또한 당신의 'AND'와 'OR'조건에 대한 배려를 가지고가는 경우에 도움이 될 것입니다 그들은 괄호가 없으므로 우선 순위는 예상과 다를 수 있습니다.

0

SELECT `messages`.*, `user`.`firstname`, `user`.`lastname`, `user`.`organisation_name`, `user`.`type`, `user_info`.`profile_picture`, `user_info`.`logo`, `user`.`email` 
FROM (`messages`) JOIN 
    `user` 
    ON `user`.`user_id` = `messages`.`from_id` JOIN 
    `user_info` 
    ON `user_info`.`uid` = `messages`.`from_id` 
WHERE `messages`.`from_id` = '4' AND 
     `messages`.`to_id` = '24572' AND 
     `messages`.`time_sent` <= '2016-06-23 12:41:47' OR 
     `messages`.`from_id` = '24572' AND 
     `messages`.`to_id` = '4' AND 
    `messages`.`time_sent` <= '2016-06-23 12:41:47' 
ORDER BY `messages`.`msg_id` DESC 
0

() 괄호ANDOR을 분류 ..이 시도하고 있는지 테이블 필드 형


SELECT messages.*, user.firstname, user.lastname, user.organisation_name, user.type, user_info.profile_picture, user_info.logo, user.email 
FROM messages 
JOIN user ON user.user_id = messages.from_id 
JOIN user_info ON user_info.uid = messages.from_id 
WHERE (messages.from_id = '4' AND messages.to_id = '24572' AND messages.time_sent <= '2016-06-23 12:41:47') 
    OR (messages.from_id = '24572' AND messages.to_id = '4' AND messages.time_sent <= '2016-06-23 12:41:47') 
ORDER BY msg_id DESC 

확인하세요 읽기 MySQL: Combining the AND and OR Conditions

Should I use field 'datetime' or 'timestamp'?


enter image description here

+0

위 날짜는 아니지만 날짜 조건을 따르지 않았습니다 –

+0

@AshokJutlawar with'2016-06-23 00 : 00 : 00' –

+0

아니요 데이터베이스에 저장된 시간을 변경할 수 없으며 해당 값만 사용해야합니다 –

2

난 당신이 보낸 사람 또는 리시버와 같은 사용자가 모든 메시지를 얻을 수있는 것 같아요. 아래에서 시도해 볼 수 있습니까?

SELECT 
    `messages`.*, `user`.`firstname`, 
    `user`.`lastname`, 
    `user`.`organisation_name`, 
    `user`.`type`, 
    `user_info`.`profile_picture`, 
    `user_info`.`logo`, 
    `user`.`email` 
FROM 
    `messages` 
JOIN `user` ON `user`.`user_id` = `messages`.`from_id` 
JOIN `user_info` ON `user_info`.`uid` = `messages`.`from_id` 
WHERE 
    (
     `messages`.`from_id` = '4' 
     AND `messages`.`to_id` = '24572' 
     AND `messages`.`time_sent` <= '2016-06-23 12:41:47' 
    ) 
OR (
    `messages`.`from_id` = '24572' 
    AND `messages`.`to_id` = '4' 
    AND `messages`.`time_sent` <= '2016-06-23 12:41:47' 
) 
ORDER BY 
    `messages`.`id` DESC 
+0

나는 위와 같았지만 따르지 않았다. 날짜 조건 –

+0

으로 오류 메시지를 공유 할 수 있습니까? –

+0

아니 그게 내게 오류를주고 있지 않습니다. 그것은 잘못된 데이터를 반환하고 있습니다. –

관련 문제