0
こんにちは私は私のjoinステートメントにエイリアスを入れたいと思います。joinステートメントの中にエイリアスを入れる方法
私のコードは次のとおりです。
SELECT distinct id_no, '' as picture, concat(lastname, IF(LENGTH(firstname) > 0 OR LENGTH(middlename) > 0, ', ', ''), concat(IF(p.degree = 5, 'Dr. ', IF(p.degree = 6, 'Dr. ', IF(p.degree = 28, 'Dr. ', '')))), firstname, IF(LENGTH(middlename) > 0, CONCAT(' ', middlename), '')) as name, tp.profession, '' as cv, e.entry_date, e.termination_date
FROM (bims_people as p)
LEFT JOIN bims_people_education as bpe ON bpe.people_id = p.id_no
LEFT JOIN tcms_profession as tp ON tp.profession_id = bpe.profession
LEFT JOIN (select * from bims_people_employment_contract_data order by termination_date DESC) e ON e.people_id = p.id_no
WHERE p.marked = 0 AND p.id_no > 1 GROUP BY p.id_no ORDER BY lastname ASC LIMIT 100, 50 ;
と私はそれをこのようにしたい:
SELECT distinct id_no, '' as picture, concat(lastname, IF(LENGTH(firstname) > 0 OR LENGTH(middlename) > 0, ', ', ''), concat(IF(p.degree = 5, 'Dr. ', IF(p.degree = 6, 'Dr. ', IF(p.degree = 28, 'Dr. ', '')))), firstname, IF(LENGTH(middlename) > 0, CONCAT(' ', middlename), '')) as name, tp.profession, '' as cv, e.entry_date, e.termination_date
FROM (bims_people as p)
LEFT JOIN bims_people_education as bpe ON bpe.people_id = p.id_no
LEFT JOIN tcms_profession as tp ON tp.profession_id = bpe.profession
LEFT JOIN (select * from bims_people_employment_contract_data **where people_id = p.id_no** order by termination_date DESC limit 1) e ON e.people_id = p.id_no
WHERE p.marked = 0 AND p.id_no > 1 GROUP BY p.id_no ORDER BY lastname ASC LIMIT 100, 50 ;
私はp.id_noが不明であることを私に告げる保ちます。あなたはそれに参加するために別のテーブルを定義するには、テーブルの別名(相関名)を使用することはできません
あなたはそのようなサブクエリを相関させることができません。私はグループごとに行番号を設定する必要があると思う(mysqlはこれに対してユーザー定義変数を使用することができる)。次にrn = 1でフィルターする。 – sgeddes
あなたは構文の問題があると思う。 'SELECT DISTINCT id_no'、 'AS picture' 'SELECT DISTINCT id_no AS picture' –
@jas - 構文に間違いはありません.2つの異なる列が選択されています'id_no'のための1つの列、' picture'のための1つの列。 'picture'カラムはすべての行で空白になります。 – sgeddes