2

私は2つのテーブルを持っています

テーブル名Dist

NAME|Phone|ID 
----------------
Oakley|555-555|1
Maui|666-666|2
lux|777-7777|3

テーブル名Patientacct

Name|prescription|id|orderfrom
-------------------------------
bob|20-20|1|oakley
billy|15-20|2|Oakley, Maui
kim|20-20|3|Lux

のようなディスプレイを探しています。

オークリー
--------------------
ボブ
ビリー
マウイ
------------------
ビリー
ルクス
--------------
キム

これまでの試行

SELECT *
FROM `dist`
JOIN `patientacct` ON patientacct.dist LIKE CONCAT('%', `dist`.name ,'%')
GROUP BY `dist`.name

これは1つのdistのみを示しました

例でグループを削除すると:

SELECT *
FROM `dist`
JOIN `patientacct` ON patientacct.dist LIKE CONCAT('%', `dist`.name ,'%')

レコードを 2 回取得するので、必要なのは 2 つの間のどこかです。私は結合に非常に慣れていないので、説明するときは簡単にしてください。

4

2 に答える 2

0

テーブル構造を変更する必要があり、次の値を持つ関係テーブルを追加する必要があります。

注文:

dist_id, patientacct_id PRIMARY_KEY(dist_id, patientacct_id)
于 2012-06-25T05:38:10.223 に答える
0

まず、テーブル構造をリレーショナルにしてください。各テーブルにプライマリ auto_increment 値を持ち、Dlist 外部キーからのプライマリ キーを Patientacct に使用します。このように、単純な結合で必要なレコードを取得できます。

表示に関しては、二度録音したくないというのはどういうことですか。結合を使用しているため、Oakley と患者の Bob と Billy の 2 つのレコードが取得されます。それはあなたが望んでいたことであり、リレーショナル テーブルでも単純な結合によって実現されます。

于 2012-06-25T10:41:46.350 に答える