複数のテーブルがあります.1つはサイトを含み、もう1つはユーザーを含んでいます。特定のユーザーを特定のサイトにバインドするリンクがあります。私は私のクエリを実行すると:1つの列と複数の値を表示するSQLクエリ
select sites.site, users.fullname
from sites
inner join users
on sites.nameid = users.id;
を私は次のような出力が得られます。
SITE | FULLNAME
site A | John Doe
site B
site C
site D | Roger Rabbit
site E
site F | Batman
I:私が探している以下のサイトのリストを持つ1 FULLNAMEはある
SITE | FULLNAME
site A | John Doe
site B | John Doe
site C | John Doe
site D | Roger Rabbit
site E | Roger Rabbit
site F | Batman
これが可能なのか、私が探しているフォーマットを得るために何か他のものを使用しなければならないかどうかは分かりません。
私は私のクエリはこれに変更された最初の...オフ....含まれている必要があることを、ここでいくつかの詳細を追加するつもりです:
SELECT completed.date, users.username, iata.code, tasks.task
FROM completed
JOIN users
ON users.id = completed.name
JOIN iata
ON iata.id = completed.code
JOIN tasks
ON tasks.id = completed.task
WHERE MONTH(completed.date) = MONTH(NOW()) AND YEAR(completed.date) = YEAR(NOW());
私が望むすべてを与えること...私は、ディスプレイに使用しています.MY PHP/HTMLは次のようになります。
<!DOCTYPE html>
<html>
<head>
<title>SPOC Report</title>
<meta charset=utf-8>
</head>
<body>
<?php
require 'db/spoc_config.php';
?>
<?php
$conn = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql_count = "
SELECT completed.date, users.username, iata.code, tasks.task
FROM completed
JOIN users
ON users.id = completed.name
JOIN iata
ON iata.id = completed.code
JOIN tasks
ON tasks.id = completed.task
WHERE MONTH(completed.date) = MONTH(NOW()) AND YEAR(completed.date) = YEAR(NOW());
";
$result_count = $conn->query($sql_count);
$count = mysqli_fetch_row($result_count);
$str_count = implode($count);
date_default_timezone_set('UTC');
$today = date('l, jS F Y');
$week = date('W');
$to = "[email protected]";
$subject = "SPOC: Monthly Report " . $today;
$heading = "<b>SPOC Report: </b>";
$message = "<h2>" . $heading . " " . $today . "</h2>";
$message .= '<table style="font-family: verdana,arial,sans-serif;font-size:11px;color:#333333;border-width: 1px;border-color: #666666;border-collapse: collapse;border-spacing: 2px;">';
$message .= '
<th style="border-width: 1px;padding: 8px;border-style: solid;border-color: #666666;background-color: #dedede;">Spoc</th>
<th style="border-width: 1px;padding: 8px;border-style: solid;border-color: #666666;background-color: #dedede;">Site</th>
<th style="border-width: 1px;padding: 8px;border-style: solid;border-color: #666666;background-color: #dedede;">Task</th>';
if ($result_count->num_rows > 0) {
while($row = $result_count->fetch_assoc()) {
$message .= '<tr style="white-space: normal;line-height: normal;font-weight: normal;font-variant: normal;font-style: normal;text-align: start;">
<td style="border-width: 1px;padding: 8px;border-style: solid;border-color: #666666;background-color: #ffffff;display: table-cell;vertical-align: inherit;">'.$row["username"].'</td>
<td style="border-width: 1px;padding: 8px;border-style: solid;border-color: #666666;background-color: #ffffff;display: table-cell;vertical-align: inherit;">'.$row["code"].'</br></td>
<td style="border-width: 1px;padding: 8px;border-style: solid;border-color: #666666;background-color: #ffffff;display: table-cell;vertical-align: inherit;">'.$row["task"].'</br></td>
</tr>';
}
} else {
echo "0 results";
}
$message .= '</table>';
$header = "From:[email protected] \r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$retval = mail ($to,$subject,$message,$header,'[email protected]');
$conn->close();
?>
</body>
</html>
出力は、しかし、次のようになります。
SPOC | SITE | TASK
JohnDoe | SITE A | TASK1
JohnDoe | SITE A | TASK2
JohnDoe | SITE B | TASK1
JohnDoe | SITE C | TASK1
ROGERRABBIT | SITE A | TASK1
ROGERRABBIT | SITE A | TASK2
私が探しているのは:
JohnDoe | Site A | TASK1, TASK2, TASK3
JohnDoe | Site B | Task1, Task2
RogerRabbit | Site A | tASk1, Task2
私はこれを少しクリアします。混乱のために申し訳ありません。
私はあなたがサイトに問い合わせるのではなく、そのサイトへの各エントリと共に各サイトをリストするのではなく、そのユーザーのクエリを試してそのサイトのリストを表示するかもしれないと思っています。すみません、申し訳ありません、私は今、家を出ています。 – ddonche
現在のレイアウトを作成する現在のPHPコードはどこですか?簡単なステップは、変数を使用して現在の 'FULLNAME'、すなわち' $ currentFULLNAME'を保持することです。値の行が '$ currentFULLNAME'の値と一致する場合、行' FULLNAME'をエコーアウトしません。行の値が一致しない場合は、 '$ currentFULLNAME'を新しい名前に設定して行の値をエコーします – Sean
私はSQLでその結果を取得しようとしません。これはむしろ面倒です。これらのレコードをPHPスクリプトで出力するだけで簡単に実行できます。実装する必要があるのは、基本的な1レベルの_group break_です。 – CBroe