2016-07-12 8 views
0

私のテーブルにはprimary_keysummary_idというラベルの列があります。各レコードの第2フィールドsummary_idの値は、別のレコードのprimary_keyフィールドにマップされます。第3のフィールドtemplate_idがあります。MySQL IDが正しくないレコードを選択する方法は?

  1. template_idは特定の値を持つレコードを選択する必要があります。たとえば、4としましょう。
  2. primary_keyは、レコード「summary_id」の少なくとも1つに一致します。

テーブルを再設計するよう教えてください。私の次のプロジェクトは、より良いデザインを持っていますが、私は今それのための時間がありません。私は1つ以上のクエリでこれを行う必要があります。より良いものは少なくなります。理想的には、1つのクエリでこれを行うにはいくつかの方法がありますが、それ以上のクエリが必要な場合は大丈夫です。

enter image description here

これは、私は自分のクエリを得ているどのくらいです。 (私は助けを必要とする理由である、それは真剣に欠けている知っている。)

SELECT DISTINCT esjp_content.template_id 
FROM esjp_content 
INNER JOIN esjp_hw_config ON esjp_content.template_id = esjp_hw_config.proc_id 
INNER JOIN esjp_assets ON esjp_hw_config.primary_key = esjp_assets.hw_config_id 
WHERE 
    esjp_content.summary_id > 0 
     AND 
    (esjp_assets.asset_label='C001498500' OR esjp_assets.asset_label='H0065' OR esjp_assets.asset_label='L0009'); 

SELECT 
    esjp_content.primary_key, esjp_content.template_id, esjp_content.content, esjp_content.summary_id 
FROM 
    esjp_content 
WHERE 
    esjp_content.template_id = 4; 

私はそのsummary_idポイントにレコードを必要とします。 summary_idが90であれば、例えば、その後、私はprimary_keyは90

enter image description here

+0

あなたの質問を編集して、サンプルデータと望ましい結果を提供してください。私は本当に第二の条件を得ていない。 –

+0

(VARCHARを除いて)、カッコ内の数字はあまり意味がないことに注意してください。 – Strawberry

+0

だから、あなたのデータベース設計を修正する時間がなく、適切な質問をすることができません。しかし、私たちはあなたが必要とするものを推測しようと時間を費やさなければなりません。 [** How-to-Ask **](http://stackoverflow.com/help/how-to-ask) \t \t [** START **](http ://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/)質問品質を向上させ、より良い回答を得る方法を学ぼう。 –

答えて

1

あるレコードを必要とするあなたは、少なくとも1行summary_id =プライマリキーの存在を探しています。このような。

SELECT * 
FROM esjp_content c 
WHERE template_id = 4 
AND EXISTS (SELECT 1 FROM esjp_content c2 WHERE c2.summary_id = c.primary_key) 
+0

これはうまくいくと思います。答えとして選択する前に、ちょっと試してみましょう。 :) –

0

あなたは両方のIDを使って、同じテーブルに参加することができます。

SELECT 
    t1.* 
FROM 
    esjp_content t1 
INNER JOIN esjp_content t2 ON t1.summary_id = t2.primary_key 
WHERE 
    t1.template_id = 4 
+0

ありがとうございますが、これは 'summary_id'が設定されているレコードを返します。 'summary_id'が指すレコードが必要です。たとえば、 'summary_id'が90の場合、' primary_key'が90のレコードが必要です。 –

関連する問題