php - 外键链接在查询中两次引用同一个表

标签 php mysql mysqli foreign-keys

我需要一些帮助来用 PHP 编写 mysql 语句。我在同一个表中引用了两次相同的外键,我需要使用 SELECT 语句引用这两个实例。 IE。我有一个名为消息的表,然后是标有发件人和收件人的两列。两列都链接到表 users。我需要在同一个查询中从发送者用户和接收者用户中提取信息。我在 StackOverflow 上看到了其他答案,但我似乎没有正确地做到这一点:/

这是我当前在 PHP 中的 mysqli 调用,仅获取发件人用户链接:

require_once('includes/connection.inc.php');

$db = dbConnect();

$stmt = $db->stmt_init();

$stmt = $db->prepare("
SELECT message.timestamp, message_type.type, 
message.sender, message.receiver, message.sender_language, 
language.translate_code, message.subject_translate, message.body_translate,
message.subject, message.body, users.image, users.externalid, users.fname,
users.lname FROM message 
INNER JOIN users ON message.sender=users.id 
INNER JOIN language ON message.sender_language=language.id
INNER JOIN message_type ON message.type=message_type.id 
WHERE (message.receiver=? AND message.archived='n') 
ORDER BY message.timestamp DESC 
LIMIT 0,10 ");

$stmt->bind_param('i', $session_id);

$stmt->execute();

$stmt->bind_result($row['date'], $row['message_type'], $row['sender'],
$row['receiver'], $row['sender_language'], $row['sender_language_code'],
$row['subject'], $row['body'], $row['subject_original'], 
$row['body_original'], $row['image'], $row['user_name'], $row['fname'],
$row['lname'] );

$record_count = 0;

while($stmt->fetch()){...

这段代码工作正常,但我需要添加

"INNER JOIN users ON message.receiver=users.id"

这样我就可以在 message.receiver 而不仅仅是 message.sender 中包含“users.image, users.externalid, users.fname, users.lname”

我正在引用这个问题/答案重写我的代码,但后来卡住了:ForeignKey Referencing Same Table

最佳答案

使用别名尝试此策略:

SELECT msg.id, sender.id, receiver.id
FROM message msg
INNER JOIN users sender ON msg.sender=sender.id 
INNER JOIN users receiver ON msg.receiver=receiver.id 
WHERE [PUT_THE_WHERE_CONDITIONS_HERE]
ORDER BY message.timestamp DESC 
LIMIT 0,10

关于php - 外键链接在查询中两次引用同一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13854661/

相关文章:

php - 如何通过 php/mysqli 获取行号

php - 将通过 AJAX 上传到 DIV 的变量传递到同一个 DIV 中,并用结果替换内容

java - 字符串长度的差异(数据库 - .txt 文件)

php - 使用 MySQLi 插入数据 - 我应该使用准备好的语句吗?

php - 无需身份验证即可拉取 Soundcloud 轨道列表

php - 我的实例没有为我获取我想要的表

php - 在 mysql 和 PHP 中搜索特殊字符

mysql - AppHarbor:通过 ASP.NET MVC 5 + Dapper 连接到 MySQL 数据库

php - 按字段对结果进行分组,但显示全部结果并按自定义顺序显示

php - 通过 PHP 更新数据库