mysql 基于2个不同的外键ID从表中获取2个值[已关闭]

wfveoks0  于 2023-08-02  发布在  Mysql
关注(0)|答案(1)|浏览(108)

已关闭。此问题需要更多focused。它目前不接受回答。
**希望改进此问题?**更新问题,使其仅针对editing this post的一个问题。

18天前关闭
Improve this question
表1保存成员详细信息,表中的每个人都不是夫妻。表2是夫妻和周年纪念日,他们是从表1中选择的,只有ID的是在表2与周年纪念日。我应该如何查询数据库发送给我的配偶1和配偶2的名字与周年纪念日包括在内,我也想过滤每个月....即所有夫妇庆祝当月。想要显示将显示例如(James &玛丽Smith -2023年7月13日)的视图,如果同一天有更多人,则将使用列表。如果我没有遵循所有的指导方针,我道歉,这是新的。谢谢大家的回复!

表一

  1. ID -主键+自动增量
  2. fname(varchar100)
    1.姓氏(varchar 100)
    1.电话(varchar 10)
  3. dob(日期)
    1.电子邮件(varchar 100)

表二

  1. ID -主键+自动增量
  2. spouse1_ID -外键INT
  3. spuse2_ID -外键INT
  4. doa -日期
    我设法只得到了一个配偶的信息。所以我不能显示名称在一起
bfnvny8b

bfnvny8b1#

如果我理解正确的话,你的解决方案可能类似沿着这些路线。

<?php
// Get the current month
$currentMonth = date('m');

// SQL query with prepared statement
$query = "
SELECT CONCAT(spouse1.fname, ' & ', spouse2.fname) AS couple_names, doa
FROM table_two
JOIN table_one AS spouse1 ON table_two.spouse1_ID = spouse1.ID
JOIN table_one AS spouse2 ON table_two.spouse2_ID = spouse2.ID
WHERE MONTH(doa) = ?
";

// Assuming you have already established a database connection
$stmt = mysqli_prepare($connection, $query);
mysqli_stmt_bind_param($stmt, 's', $currentMonth);
mysqli_stmt_execute($stmt);

// Get the result set
$result = mysqli_stmt_get_result($stmt);

// Check if any results were returned
if (mysqli_num_rows($result) > 0) {
  // Loop through the rows and display the couples
  while ($row = mysqli_fetch_assoc($result)) {
    $coupleNames = $row['couple_names'];
    $anniversaryDate = date('d F Y', strtotime($row['doa']));
    
    echo "$coupleNames - $anniversaryDate<br>";
  }
} else {
  echo "No couples found celebrating this month.";
}

// Close the prepared statement and the database connection
mysqli_stmt_close($stmt);
mysqli_close($connection);
?>

字符串

相关问题