2016-06-27 14 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 ConditionsShould I use field 'datetime' or 'timestamp'?


enter image description here

+0

私は上記のことを行いましたが、日付条件に従っていません –

+0

@AshokJutlawar try '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

いいえ、私にエラーを与えていません.itは間違ったデータを返しています。 –