I need some help writing a mysql statement in PHP. I have the same foreign key referenced twice in the same table and I need to reference both instances with a SELECT statement. I.E. I have a table called messages, and then two columns labeled sender and receiver. Both columns link to the table users. I need to pull the info from sender-users and receiver-users in the same query. I’ve seen other answers on StackOverflow, but I don’t seem to be doing it correctly :/
Here is my current mysqli call in PHP with only grabbing the sender-users link:
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()){...
This code works fine, but I need to add
"INNER JOIN users ON message.receiver=users.id"
correctly so I can include “users.image, users.externalid, users.fname, users.lname” with respect to message.receiver and not just message.sender
I was rewriting my code with reference to this question/answer but then got stuck: ForeignKey Referencing Same Table
Try this strategy using alias: