sql >> データベース >  >> RDS >> Mysql

以前にメッセージを送信したユーザーのリストを取得する必要があります(MySQL)

    まず、テーブル(メッセージ)でフィールドuser_idを取得する必要があります。後で、このテーブルに参加して、次のようにselectを記述できます:

    select * from users usr
    join messages msg on msg.user_id = usr.user_id
    where msg.incoming_msg_id is not null
    

    後でメッセージを送信したすべてのユーザーが表示されます。

    @UPDATE

    フィールドoutgoing_msg_idと言った場合 選択するユーザーIDは次のようになります:

    select DISTINCT usr.user_id,usr.fname,usr.lname from users usr
    join messages msg on msg.outgoing_msg_id = usr.user_id
    

    この選択により、メッセージを送信したすべてのユーザーが表示されます。

    @EDIT 3

    So your php code should be like :
    
    <?php
        session_start();
        include_once "config.php";
        $outgoing_id = $_SESSION['unique_id'];
        $sql = "SELECT * FROM users WHERE NOT unique_id = {$outgoing_id} and unique_id in (select outgoing_msg_id from messages)  ORDER BY user_id DESC";
        $query = mysqli_query($conn, $sql);
        $output = "";
        if(mysqli_num_rows($query) == 0){
            $output .= "No users are available to chat";
        }elseif(mysqli_num_rows($query) > 0){
            include_once "data.php";
        }
        echo $output;
    ?>
    



    1. MySQLは重複レコードを削除しますが、最新の状態に保ちます

    2. MySQLのテーブルから列を削除する方法

    3. MYSQL auto_increment_increment

    4. MySQLの列のデータ型を変更するにはどうすればよいですか?