私はphpとmysqlが初めてで、フォームからユーザーに関する特定のデータを保存し、ユーザーが同様の少し複雑なフォームに基づいて検索できるようにするWebアプリケーションを2日間作成しようとしています。フォームが機能し、データベースにも入力されましたが、mysql からのデータの受信に問題があり、将来的には検索機能にも問題が発生する可能性がありますが、それについてはまだあまり考えていませんでした。現在、その特定のデータを db から取得することに重点を置いています。
SELECT players.*,
brackets.name AS interested_in,
classes.name AS looking_for,
tags.name AS tagged_with
FROM players JOIN player_brackets ON (players.id = player_brackets.player_id)
JOIN brackets ON (player_brackets.bracket_id = brackets.id)
JOIN player_classes ON (player_brackets.player_id = player_classes.player_id)
JOIN classes ON (player_classes.class_id = classes.id)
JOIN player_tags ON (player_classes.player_id = player_tags.player_id)
JOIN tags ON (player_tags.tag_id = tags.id)
WHERE players.id = '18'
私は正常に動作するこのクエリを持っていますが、そこから取得したデータは、データベース内のデータのすべての組み合わせであり、現在は 100 以上の結果がほぼ同じです。その結果を db 内のフィールド数で乗算します。たとえば、プレーヤー (1) * ブラケット (3) * クラス (11) * タグ (5) は、フィールド ブラケット、クラスの違いでほぼ同じデータの 165 行を出力します。とタグ。
その結果をグループ化すると、players.id
1 行しか得られませんが、他のフィールドのデータは失われます。すべてを含む1行を取得したい(おそらく、配列内に複数のデータがあるcol)。
DB には、プレーヤー、タグ、クラス、ブラケット、およびプレーヤー ID とタグ/クラス/ブラケット ID の組み合わせを含む 3 つのテーブルの 7 つのテーブルがあります。
私はウェブとSOを検索してきましたが、何も役に立ちませんでした。誰かがこれで私を助けることができればとてもいいです. 返信ありがとうございます。私の母国語ではない下手な英語で申し訳ありません。