0

イベントを保持するテーブルがあります。各イベントには名前がありますが、イベントは名前に基づいてグループ化されます。

+---------------+
| NAME          |
+---------------+
| EVENT 1 CHILD |
| EVENT 1 ADULT |
+---------------+

サンプル行です。ただし、イベントを照会するときは、イベント名の1つだけを表示したいと思います。

つまり、基本的には、EVENT 1 ADULTのみを表示したいのです。これは、子がその名前を介してそれにリンクされているためです。

MySQLでこれを純粋に行う方法がわかりません。クエリを実行してから、PHPでイベントを取り除くことができることはわかっていますが、MySQLでこれを行うことができれば、これを行うのはばかげているようです。

この問題に取り組む方法について何かアドバイスはありますか?

ありがとう!

4

2 に答える 2

4

次のようなものしかない日付を読むことができますADULT

SELECT * FROM table WHERE NAME LIKE '%ADULT%';

または、常に最後にある場合:

SELECT * FROM table WHERE NAME LIKE '% ADULT';

ただし、大文字と小文字を区別する必要がある場合は、次のようにしてください。

SELECT * FROM table WHERE NAME LIKE BINARY '%ADULT%';
于 2012-12-10T11:36:28.777 に答える
0

テーブル構造を変更して、parent_id 列を含める必要があります。これにより、名前に基づかずに子レコードを親に明示的にリンクできるようになり、次を使用して親レコードのみを簡単にクエリできます。

SELECT name FROM events WHERE parent_id IS NULL;

編集:

(コメントごとに)データを変更できない場合は、親を見つけるために次のようなものに行き詰まっています:

SELECT name FROM events WHERE name LIKE '%ADULT%';

そして、特定の大人の子供を見つけるために:

SELECT name FROM events WHERE name LIKE CONCAT('%', TRIM(TRAILING 'ADULT' FROM '$parentName', '%');

これは、LIKE を使用した CONCAT の完全にテストされていない使用法であるため、機能するという単なる推測にすぎないことに注意してください。

于 2012-12-10T11:29:40.277 に答える