0

このクエリは、where句でエラー不明の列会社を示します。where句が最初に実行され、selectが次に実行されることがわかりました。ここでのエラーである可能性があります。しかし、結果セットに会社を入れるためにこれを修正する方法がわかりません。

SELECT trnsdriverid,
       name,
       (SELECT transcompany.name
        FROM   transcompany,
               transcompdriver
        WHERE  transcompany.trnscompid = transcompdriver.trnscompid) AS 'company',
       address,
       dob,
       license,
       telephone
FROM   transcompdriver
WHERE  ? LIKE 'All'
        OR name LIKE '%"+keyword+"%'
        OR company LIKE '%"+keyword+"%'
        OR trnsdriverid LIKE '%"+keyword+"%' 
4

3 に答える 3

1

whereステートメントで列エイリアスを参照することはできません。JOINを使用するようにこのクエリを書き直してから、実際のTransCompany.name列でフィルタリングを実行する必要があります。次に例を示します。

select 
     d.trnsDriverID
    ,d.name
    ,c.name as [Company]
    ,d.address
    ,d.dob
    ,d.license
    ,d.telephone 
from 
    TransCompDriver d
join
    TransCompany c
    on
    c.trnscompid = d.trnscompid
where 
    ? = 'All' 
    or 
    d.name like '%" + keyword + "%' 
    or 
    c.name like '%" + keyword + "%' 
    or 
    d.trnsDriverID like '%" + keyword + "%'

また、LIKE単純な等式演算子が使用する場所では使用しないでください。上記のクエリを使用するように変更しました= 'All'

于 2013-03-25T17:07:36.270 に答える
0

副選択ではなく結合を使用してこれを実際に行う必要があります。私はこれをお勧めします:

SELECT
    d.trnsDriverID,
    d.name,
    c.name AS `company`,
    d.address,
    d.dob,
    d.license,
    d.telephone
FROM
    TransCompDriver AS d
    INNER JOIN TransCompany AS c
        ON d.trnsCompID = c.trnsCompID
WHERE
    ? like 'All'
    OR d.name LIKE '%"+keyword+"%'
    OR `company` LIKE '%"+keyword+"%'
    OR d.trnsDriverID LIKE '%"+keyword+"%'
于 2013-03-25T17:07:55.833 に答える
0

列「company」をプルするサブクエリに一致する行数がない場合は、代わりに結合ステートメントを試してください

select trnsDriverID, name, t1.name AS company, address, dob, license, telephone    
from TransCompDriver JOIN (select trnsDriverID, name, 
(select TransCompany.name from TransCompany LEFT JOIN TransCompDriver   
ON TransCompany.trnsCompID=TransCompDriver.trnsCompID) AS t1   
where ? like 'All' or name like '%"+keyword+"%'   or company like '%"+keyword+"%' 
or trnsDriverID like '%"+keyword+"%'
于 2013-03-25T17:10:02.997 に答える