1

私は自分の質問を検索しましたが、私の特定のニーズに答えるものはないようです。これは単純なテーブル結合ですが、私が試したことはすべて失敗しました。多分あなたは助けることができます。注: POSTS ではすべての行に post_id がありますが、CALENDAR ではすべての post_id が関連しているわけではありません。つまり、すべての投稿にカレンダー エントリがあるわけではありません。また、MYSQLi ではなく、PHP で MYSQL を使用しています。

POST_CAT - post_id、cat_id POSTS - post_id、タイトル、説明 CALENDAR - post_id、on_date、to_date

現在、多対多の選択により関連する post_ids を見つけ、一連の for ループを使用して単一のテーブルから出力しました。これは機能します。しかし、関連する post_id のカレンダー エントリを 1 つの配列に含める必要があります。

mysql_connect("localhost", "root", "root") or die(mysql_error());
mysql_select_db("adamsmap_db") or die(mysql_error());

if (isset($_POST['activities'])) {

$post_id = mysql_query("SELECT post_id FROM post_cat WHERE cat_id = '1'");
    while ($row = mysql_fetch_array($post_id, MYSQL_NUM)) {

    for ($i=0;$i < count($row); $i++) {

$output = mysql_query("SELECT user_id, title, description FROM posts WHERE post_id='$row[$i]'");
    while ($rowoutput = mysql_fetch_array($output, MYSQL_NUM)) {

    for($i=0;$i < count($rowoutput);$i++) {

echo $rowoutput[$i]."&nbsp";

}

echo"<br /> <br />";

}}}}    
4

1 に答える 1

1

このクエリは、コーディングしたビジネスロジックとカレンダー情報を複製します。

SELECT 
    zpc.ost_id, p.user_id, p.title, p.description, c.*
FROM Z_post_cat zpc
INNER JOIN posts p ON zpc.post_id = p.post_id 
INNER JOIN calendar c ON c.post_id = = p.post_id
WHERE zpc.cat_id = '1'

投稿のないカテゴリを含める場合は、INNERJOINの代わりにLEFTJOINを使用してください。

また、セキュリティ上の懸念から、mysqlではなくPDOまたはMysqliに移行することをお勧めします。

于 2013-01-07T20:26:39.333 に答える