Mysql Sorgu şüphe

2 Cevap php

Üç tablo yani test1, Test2, Test3 var

test1 data
===========
id test_id q_id 
1    25      2
2    27      2

test2 data
===========
id test_id q_id 
1    25      2
2    34      2

test3 data
===========
id test_id q_id 
1    34      2

nasıl q_id = 2 bu üç tablodan veri tekrarı olmadan ile test_id değeri olsun?

Bu 25, 27, 34 olan

2 Cevap

Eğer gerçekten üç yapısal aynı tablo iki kurtulmak yapamıyorsanız UNION operatör bakabilirsiniz. Varsayılan davranış sonuçları çiftleri kaldırır DISTINCT BİRLİĞİ olduğunu.

  SELECT test_id FROM test1 WHERE q_id=2
UNION DISTINCT
  SELECT test_id FROM test2 WHERE q_id=2
UNION DISTINCT
  SELECT test_id FROM test3 WHERE q_id=2

@ Sadece biri - Sorgu 3 yapıyor select * yoğun olabilir ki, bu satırları gereksiz bir dizi önlemek için her üç sınırlamak için en iyisidir:

    SELECT test_id, 'test1' AS tableName FROM test1 WHERE q_id = 2
    UNION
    SELECT test_id, 'test2' AS tableName FROM test2 WHERE q_id = 2
    UNION
    SELECT test_id, 'test3' AS tableName FROM test3 WHERE q_id = 2

The above query was modified to reflect which table each q_id came from.