2017-03-16 2 views
0
company_name | macid   | expiry_date 
--------------------------------------------- 
abc   | 123456789012 | 2017-03-23 
qwe   |12 | 2018-05-24 
asd   | 456789123012 | 2019-07-07 
abc   | 789456123000 | 2017-03-23 
abc   | 445544444444 | 2018-03-03 
abc   | 555555555555 | 2017-03-25 


company_name | desktop   | server 
abc   123456789012  555555555555 
       789456123000 

私は上記の2つのテーブルを持っており、テーブル1とテーブル2にあるすべてのキーと有効期限が必要です。また、私は新しい行とデスクトップmacidとサーバーmacidを別の列に格納するようにすべてのmacidを保管しています。私のクエリmysqlのような2つのテーブルのクエリ

"select a.macid,a.expity_date from table1 a,table2 b where a.macid like b.desktop or a.macid like %'b.server%'" 

ですが、show result nullです。解決するのを助けてください。

私は私が検索したい場合はtable2のため

macid   | expiry_date 
--------------------------------------------- 
123456789012 | 2017-03-23 
789456123000 | 2017-03-23 
555555555555 | 2017-03-25 

を引き起こすたい私は%のないレコード(パーセンテージ)を取得することはできません

"select * from table2 where desktop like '%123456789012%'" 

を使用する必要があり、それらをMAC_ID

答えて

0

はこれを試してみてください:

"select a.macid,a.expity_date from table1 a JOIN table2 b ON (a.macid like b.desktop OR a.macid like b.server)" 
1

2つの別々のJOINを作成してからUINONを作成しなければなりません。ここで

SELECT macid, expiry_date 
FROM table1 JOIN table2 
ON table1.macid = table2.desktop 
UNION 
SELECT macid, expiry_date 
FROM table1 JOIN table2 
ON table1.macid = table2.server 

が動作デモです:http://sqlfiddle.com/#!9/dccea43/1

2

私はそれだけでタイプミスではなく、expity_dateだと思う、それはdemoを参照してください、あなたのクエリでexpiry_dateです。

select a.macid, a.expiry_date 
from table1 a, table2 b 
where a.macid like b.desktop or a.macid like b.server 

しかし、物事を行うに参加joinないカンマ(、)を使用することがより優れている:

select a.macid, a.expiry_date 
from table1 a 
join table2 b 
on a.macid like b.desktop or a.macid like b.server 

もここdemoをご確認ください。
desktopserverが同じ場合はmacidと同じですが、等号(=)を使用するだけで問題ありません。

+0

私はすべてのデータが改行として保存されていると言います。だから私は%% – LOKESH

+0

@LOKESHと同様のクエリを使用する必要があります。 – Blank

関連する問題