php - 与家族层次结构/布局相关的 MySQL 查询

标签 php mysql

我有一些以此格式排列的数据。

SR | NAME            | FATHER NAME       | ADDRESS    | GROUP
1  | SAM FISHER      | MR. KINGSLEY      | PARK VIEW  | USER   
2  | JOHN FISHER     | MR. KINGSLEY      | PARK VIEW  | USER 
3  | KADINAL         | MR. BEN           | PARK VIEW  | USER

这里 1 和 2 是 Kingsley 先生的 child ,他们有相同的地址和群组。 但第三个不是 Kingsley 先生的 child ,但有相同的地址和群组。

我需要这样的查询,以便我可以获得此类数据的同级报告。

输出应该是这样的

sibling 报告

SR | NAME            | FATHER NAME       | ADDRESS    | GROUP
1  | SAM FISHER      | MR. KINGSLEY      | PARK VIEW  | USER  
     JOHN FISHER
-------------------------------------------------------------
2  | KADINAL         | MR. BEN           | PARK VIEW  | USER

现在我正在使用mysql查询

SELECT id, fat_name, sec, address, class, mobile,
  GROUP_CONCAT(DISTINCT stu_name order by class ASC SEPARATOR ', ' ) stu_name,
  GROUP_CONCAT(DISTINCT class order by class ASC SEPARATOR '<br>' ) class,
  GROUP_CONCAT(DISTINCT sec order by class ASC SEPARATOR '<br>' ) sec,
  GROUP_CONCAT(DISTINCT address order by class ASC SEPARATOR '<br>' ) address,
  GROUP_CONCAT(DISTINCT adm_no order by class ASC SEPARATOR '<br>' ) adm_no
FROM student
where class <> 'OUT' and session='".$session."'
GROUP BY fat_name
order by class DESC

PHP:

<?php
echo "<table id='testTable'><tr>";
$count = 1;

while ($row = mysql_fetch_array($sql, MYSQL_ASSOC))
    {
    extract($row);
    $stu_name = $row['stu_name'];
    $fat_name = $row['fat_name'];
    $address = $row['address'];
    echo "<td style='width:33%;'><br/>" . $stu_name . "<br/>" . $fat_name . "<br/>" . $address . "<br/><br‌​/></td>";
    if ($count++ % 3 == 0)
        {
        echo "</tr><tr>";
        }
    }

echo "</tr></table><br/><br/><br/>";

它还有一个条件,如果 John Fisher 与 Sam Fisher 一起出现在顶部,那么 John 不会在底部重复。

最佳答案

如果“FATHER NAME”值相同的记录的 ADDRESS 和 GROUP 值也相同,则应考虑重新设计表并将“FATHER NAME”、ADDRESS 和 GROUP 放在单独的表中,并将“Name”放在另一个表中带有外国引用文献的表。否则,这对于你想要实现的目标来说就没有意义。

关于php - 与家族层次结构/布局相关的 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22012534/

相关文章:

mysql - 优化子选择搜索查询

php - 使用触发器插入到表中

javascript - 如果在下拉列表中选择某个项目,如何创建文本框?

php - 棘手的问题 : How to order results from a multiple regexes

php - PHP 5.4 的编译器当前状态如何?

php - Coldfusion 相当于 PHP strtotime()?

php - 如何使用 php 从数据库(mysql)中检索特定值

MySQL查询三张表省略列中重复项

php - Android 应用程序向 mysql 数据库添加数据会抛出 JSONException

php - MySQL 到 JSON 列出多行