私は2つのSQLテーブルを持っています(これは変更できません。これは、同様の列なしで取得する方法の問題です)。内部結合を使用して都市と州をリストするときに、テーブルの種類を調べる必要があります。
CREATE TABLE authors
(
au_id CHAR(3) NOT NULL,
au_fname VARCHAR(15) NOT NULL,
au_lname VARCHAR(15) NOT NULL,
phone VARCHAR(12) ,
address VARCHAR(20) ,
city VARCHAR(15) ,
state CHAR(2) ,
zip CHAR(5) ,
CONSTRAINT pk_authors PRIMARY KEY (au_id)
);
CREATE TABLE publishers
(
pub_id CHAR(3) NOT NULL,
pub_name VARCHAR(20) NOT NULL,
city VARCHAR(15) NOT NULL,
state CHAR(2) ,
country VARCHAR(15) NOT NULL,
CONSTRAINT pk_publishers PRIMARY KEY (pub_id)
);
select が正しく出力されるように CASE を使用しようとしています。
SELECT CASE
WHEN LCASE(SUBSTR(/*suppose id*/, 0, 1)) == 'a'
THEN 'author'
ELSE 'publisher'
END
AS type, city, state
FROM authors
INNER JOIN publishers
テーブルは、ID が異なるだけでなく、異なる名前を保持するような形式になっています。
INSERT INTO authors VALUES('A01','Sarah','Buchman','718-496-7223',
'75 West 205 St','Bronx','NY','10468');
INSERT INTO publishers VALUES('P01','Abatis Publishers','New York','NY','USA');
そして、私は次のような出力に到達しようとしています:
type | city | state
--------------------------------------------------
author | Rochester | NY
author | Syracuse | NY
publisher | New York | NY
2 つのテーブルに類似の列がない場合、どうすればこれらのテーブルを効果的に比較できますか? テーブルのフィールド値を呼び出して、SQL 例外をスローせずに null かどうかを確認できますか?