2016-06-20 4 views
0

症状を入力して病気になるのを助けるアプリケーションに取り組んでいます。病気と症状のベストマッチを見つけるには?

Iは以下に示すように、2つのテーブルを関連付ける症状、疾患、および病気の症状に関する情報を次のデータベーステーブルを持っている:私はユーザが選択した症状を検索する

DISEASE_T SYMPTOMS disease-symptoms 
========== ========== ======== 
DISEASE_ID SYMPTOM_ID DISEASE_ID 
VALUE  VALUE  SYMPTOM_ID 

のアレイであります病気の症状の表で症状を確認し、症状の大部分が各疾患と一致する場合に基づいて、一致する5つの病気のIDを返します。例えば

は、ユーザ選択の症状は1,2,3(咳、風邪、頭痛)

DISEASE_T  SYMPTOMS_T disease-symptoms 
=========  ========== =============== 
1,malaria  1,cough   1,1 
2,tuberculosis 2,cold   1,2 
3,typhoid  3,headache  2,2 
           2,3 
           3,1 
           3,2 
           3,3 

任意の助けが理解されるであろうれます。

+0

この質問は少し曖昧ですが、それは私だけかもしれませんが。あなたはウェブサイトのためのアプリケーションを構築しようとしていますか?その場合、AJAX呼び出しを使用してSQLデータベースに接続し、結果を返すことができますが、私は個人的にSQLを使用しません。 JSONは、非同期データ交換の方がずっと簡単で効率的です。 – Tijmen

+0

あなたの質問は何ですか?あなたは質問を私たちに聞いていますか?何を試しましたか? – llouk

+0

@llouk、上記の図は、私がこれまで行ってきたことについての洞察を与えます。 – quintumnia

答えて

0

あなたが予選に興味を持っている症状に基づいて、直接の病気 - 症状の表を簡単に検索します。グループは実際の症状の数が何であれ、疾患ごとに1つの記録を与えるでしょう。最後に、ORDER BY DESCENDING命令は、最も一致した症状をリストの先頭に置きます。

これで、シンプルに症状や病気に参加して、最終的な読み取りコンテキスト出力のための「値」記述子を取得します。

select 
     DS.Disease_ID, 
     D.Value as Disease, 
     group_concat(S.Value SEPARATOR ',') as Symptoms, 
     count(*) as SymptomsMatching 
    from 
     Disease-Symptoms DS 
     JOIN Symptoms_T S 
      on DS.Symptom_ID = S.Symptom_ID 
     JOIN Disease_T D 
      on DS.Disease_ID = D.Disease_ID 
    where 
     DS.Symptom_ID IN (1, 2, 3) 
    group by 
     DS.Disease_ID 
    order by 
     count(*) desc, 
     D.Value 
+0

あなたの説明は本当に素晴らしいです! – quintumnia

+0

私はフロントエンドフォームを作成しました。ここで、ユーザーは、フォームを入力します。私はあなたのコードロジックをHTMLフォームに埋め込まれた.phpファイルに実装しようとしました。私にヒントを教えてくださいフォームを処理するためのコードはどのようにするべきか – quintumnia

関連する問題