簡體   English   中英

顯示分組查詢的完整行

[英]Displaying complete rows of grouped query

我有一個包含姓名和醫療處方的 MySQL 數據庫。 我要做的是遍歷屬於特定名稱的所有處方並將它們顯示在表格中,然后創建一個具有下一個名稱和一組新處方的新表格。

當我使用 GROUP BY 時,我能夠顯示患者的姓名和每個組的第一個表格行。 但我不知道如何從組內的 sub_fields 填充行。 我已經嘗試過GROUP_CONCAT ,它允許我以逗號分隔的形式顯示組中列的所有行,但我仍然需要像這樣填充子行中的所有數據:

NAME1: - START1_1 - END1_1 - DRUGID1_1

  • START1_2
  • END1_2
  • 葯物 ID1_2

  • START1_3

  • END1_3
  • 葯物 ID1_3

NAME2: - START2_1 - END2_1 - DRUGID2_1

  • START2_2
  • END2_2
  • 葯物 ID2_2

  • START2_3

  • END2_3
  • 葯物 ID2_3

我嘗試使用以下代碼,使用 Group by,我也嘗試使用 GROUP_CONCAT,但我不知道如何處理輸出。

$med = "SELECT  *  FROM {$wpdb->prefix}medicin_skema GROUP BY elevnavn";

 foreach ($wpdb->get_results($med, ARRAY_A ) as $row) {
     echo '<br>'.$row['elevnavn'].' ';
     echo '<br>'.$row['start_dato'].' ';
     echo '<br>'.$row['slut_dato'].' ';
     echo '<br><br>'.$row['drugid'].' '; 
 }
SELECT * 
  FROM medicin_skema 
 GROUP 
    BY elevid

此查詢返回無意義(或“不確定”)結果。 在沒有任何聚合函數的情況下,包含 GROUP BY 子句是沒有意義的。 另外,永遠不要使用邪惡的SELECT * - 它只會增加混亂。

然后在循環中使用此查詢來生成 n 個進一步的查詢。 這太荒謬了! 如有必要,只需創建一個帶有連接的查詢。

最后,您直接在查詢字符串中包含變量。 這被認為是不安全和不好的做法。 相反,始終使用准備好的和綁定的查詢。

如果您在構建合理且安全的查詢方面需要進一步幫助,請考慮按照以下建議修改您的問題。 請注意,它有 3 個部分。 為什么我應該為一個非常簡單的 SQL 查詢提供一個最小的可重現示例?

你所做的一切都很好。 我最終得到了這個,它有效:

$med = "SELECT * FROM {$wpdb->prefix}medicin_skema GROUP BY elevid";
                $drugname = '';
                $dato = '';

foreach( $wpdb->get_results($med, ARRAY_A) as $medicinskema ) 
{
$name=$medicinskema['elevid'];
                echo '<table class="cpt-table"><tbody>';
                    echo '<tr><th colspan="3">Elev: ' . $medicinskema['elevid'] . '</th>';
                    echo '<th colspan="6">CPRnr.: ' . $medicinskema['elevcpr'] . '</th>';
                    echo '<th colspan="5">Udfyldt: ' . date('d-m-Y', strtotime($medicinskema['time'])) . '</th></tr>';$newquery = "SELECT * from {$wpdb->prefix}medicin_skema where elevid='$name'";
$prescriptions = $wpdb->get_results($newquery, ARRAY_A);
    // dumping($prescriptions);
    foreach($prescriptions as $prescription) 
   {

如果我理解正確 - 您正在按患者姓名分組 - 所以您將獲得每個患者姓名的記錄。

蠻力方法是選擇一組不同的患者姓名; 然后按開始日期或/結束日期或您想要的任何合理選項選擇他們訂購的每個處方 - 然后進行您的創作?

本質上是一個子選擇(我假設 elevnavn 是 NAME)

SELECT distinct(elevnavn) from {$wpdb->prefix}medicin_skema

 while($row = mysql_fetch_array($result)) 
{
$name=$row[0];
$newquery="SELECT * from {$wpdb->prefix}medicin_skema where elevnavn='".$name"'";
execute the query
    while($row = mysql_fetch_array($result)) 
   {
        retrieve dates, drug id etc
        new create query
   }

 }

您也可以進行插入(從中選擇),但您需要先正確選擇子選擇,然后使用左連接來獲取每個名稱的所有記錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM