1

こんにちは、tbl_relations次のようなテーブルがあります

 -----------------------------------
 | id  |  source_id  |  target_id  |
 -----------------------------------
 | 2   |   2         |   4         |
 -----------------------------------
 | 3   |   5         |   7         | 
 -----------------------------------
 | 4   |   7         |   4         |
 -----------------------------------  

そして、次のtbl_looksupように見える他のテーブル

------------------------------
| id   |  language  |  value  |
------------------------------
| 1    |  1         |   abc   |
------------------------------
| 1    |  2         |   abc   |
------------------------------
| 2    |  1         |   abc   |
-------------------------------
| 2    |  2         |   abc   |
-------------------------------
| 5    |  1         |   abc   |
-------------------------------
| 5    |  2         |   abc   |
-------------------------------
| 7    |  1         |   abc   |
-------------------------------
| 7    |  1         |   abc   |
-------------------------------

tbl_relationstbl_looksupなるようにマッピングされます。tbl_relations.source_idtbl_relations.target_idid of tbl_looksup

私の問題tbl_relationswhoessource_idまたはtarget_idに存在しない レコードを見つける必要がありますtbl_looksupidに存在しないことを意味しtbl_looksupます。詳しくは、 tbl_relations の最初のレコードには、 にtarget_id = 4存在しないものがありtbl_looksupます。これは欠陥レコードです。これらの記録を見つける必要があります。

これまでに行ったこと

 SELECT 
  tbl_relations.source_id,
  tbl_relations.target_id,
  tbl_relations.id,
  tbl_looksup.`id` AS tblid 
FROM
  tbl_relations
  LEFT JOIN tbl_looksup 
   ON tbl_relations.`source_id` != tbl_looksup.`id` 
   OR tbl_relations.`target_id` != tbl_looksup.`id` 
GROUP BY tbl_relations.id
4

4 に答える 4

2

目的の結果を得るにtbl_looksupは、そのテーブルに依存する 2 つの列があるため、2 回結合する必要があります。

SELECT  DISTINCT a.*
FROM    tbl_relations a
        LEFT JOIN tbl_looksup  b
            ON a.source_id  = b.id
        LEFT JOIN tbl_looksup  c
            ON a.target_id = c.id
WHERE   b.id IS NULL OR 
        c.id IS NULL

結合についてさらに詳しく知りたい場合は、以下のリンクにアクセスしてください。

出力

╔════╦═══════════╦═══════════╗
║ ID ║ SOURCE_ID ║ TARGET_ID ║
╠════╬═══════════╬═══════════╣
║  2 ║         2 ║         4 ║
║  4 ║         7 ║         4 ║
╚════╩═══════════╩═══════════╝
于 2013-03-13T06:43:28.783 に答える
0
SELECT 
  tbl_relations.source_id,
  tbl_relations.target_id,
  tbl_relations.id 
FROM
  tbl_relations 
   WHERE tbl_relations.source_id not in (select id from tbl_looksup)
      OR tbl_relations.target_id not in (select id from tbl_looksup)
于 2013-03-13T06:45:00.063 に答える
0

これを追加してみてください:

WHERE tbl_relations. target_id無効です

于 2013-03-13T06:45:50.760 に答える
0
SELECT tbl_relations.id FROM tbl_relations 
  LEFT JOIN tbl_looksup 
    ON tbl_looksup.id = tbl_relations.source_id OR tbl_looksup.id = tbl_relations.target_id 
  WHERE tbl_looksup.id IS NULL
于 2013-03-13T06:47:09.870 に答える