【问题标题】:How can i fetch record from three table without duplicate rows? [duplicate]如何从三个表中获取没有重复行的记录? [复制]
【发布时间】:2018-09-21 07:53:44
【问题描述】:

如何从三个表中获取没有重复行的记录?(已编辑问题) 下面是我的表结构

--
-- table structure for table `users`
--
CREATE TABLE `users`(
`user_id` int(11)NOT NULL,
`name` varchar(50) NOT NULL,
`email` varchar(50) NOT NULL,
`password` varchar(300) NOT NULL,
`time_joined` time NOT NULL,
`date_joined` date NOT NULL
)ENGINE=MyISAM  DEFAULT CHARSET=latin1;
--
-- table structure for table `activity`
--
CREATE TABLE `activity`(
`activity_id` int(11)NOT NULL,
`user_id` int(11) NOT NULL,
`time_loged` time NOT NULL,
`time_out` time NOT NULL
)ENGINE=MyISAM  DEFAULT CHARSET=latin1;
--
-- table structure for table `timeout`
--
CREATE TABLE `timeout`(
`timeout_id` int(11)NOT NULL,
`user_id` int(11)NOT NULL,
`time_out` time NOT NULL
)ENGINE=MyISAM  DEFAULT CHARSET=latin1;

这是我的努力

$id=$_SESSION['user'];
        $query = $conn->query("SELECT *  FROM users left join timeout on users.user_id=timeout.user_id left join activity on users.user_id=activity.user_id WHERE users.user_id='$id'");
    while($row = $query->fetch(PDO::FETCH_ASSOC))
    {

【问题讨论】:

  • 为此使用谷歌
  • 定义重复行...对您而言,什么是唯一行?你到底想从查询中得到什么?
  • 您可能想更改您的问题标题,该问题似乎与发送短信无关
  • 你之前有没有尝试过?
  • 是的,再次阅读问题

标签: php mysql


【解决方案1】:

对“活动”和“超时”进行第二次左连接,因此查询应如下所示:

SELECT * FROM users
LEFT JOIN timeout ON users.user_id = timeout.user_id
LEFT JOIN activity ON timeout.user_id = activity.user_id
WHERE users.user_id = '$id'

你可以在这里得到进一步的解释:https://www.codeproject.com/Questions/693539/left-join-in-multiple-tables

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-02
    • 2021-02-27
    • 2023-03-15
    相关资源
    最近更新 更多