1

データベースに問題があります。私は次のことをしています:

create table book
(
    name_b varchaR(50) primary key,
    typee varchaR(50) not null,
    nmbr integer unique not null,
    yeare numeric(4,0) default null,
)

create table story
(
    id integer identity(1,1) primary key,
    name_s varchar(100) not null,
    chars varchar(100) not null,
    code varchaR(200) null,
    artist varchar(100) default null,
    argument varchar(100) default null,
    book_ref_name varchar(50) references book(name_b),
    book_ref_nmbr integer references book(nmbr)
)

insert into story values
('StoryName1','StoryChars1',null,default,default,'BookName1',13),
('StoryName2','StoryChars2',null,default,default,'BookName2',35),
('StoryName3','StoryChars3',null,default,default,'BookName3',125)

insert into book values
('BookName1','Type1',13,default),
('BookName2','Type2',35,default),
('BookName3','Type3',125,default)


UPDATE story
SET code = name_s + '-' + chars + '-' + book_ref_name + '-' + Convert(varchar(50), book_ref_nmbr)
WHERE code IS NULL

nullフィールドを除いてSTORYから*を選択するSELECTステートメントを作成するにはどうすればよいですか。たとえば、ストーリーに議論者/芸術家がいない場合、そのフィールドを表示したくありません。

例えば:

結果は次のテーブルselect * from story where name_s = 'StoryName1'になりますが、これら2つのフィールドがNULLであるため、このテーブルのようにしたいと思います。

最後のテーブルがそのように表示されるように私はこれを行いましたselect id,name_s,chars,code,book_ref_name,book_ref_nmbr from story where name_s = 'StoryName1'

私はこのようなことをしようとしています(このコードは明らかに存在しませんが、私をよりよく説明しようとするための単なる例です)

select ""notnullcollumns"" from story where name_s = 'StoryName1'
4

4 に答える 4

3

の意味を覚えておいてください*。これは、射影、別名、列を列挙するための単なる代替です。

特定の行の列を選択しないのはどうしてですか?出力にはレイアウトが必要なので、これは意味がありません。

出力レイアウトがどのようになるかを真剣に考えてから、お知らせください。今のところ、この質問はあまり意味がありません。

于 2012-03-20T23:01:35.847 に答える
1

それは不可能です!例では、それぞれに 1 行しかない 2 つのテーブルを示していますが、通常、テーブルにはさらに多くの行があります。2 つの行を持つテーブルがあり、そのうちの 1 つだけがそれらの列に値を持っている場合はどうなるNULLでしょうか?

今、できることはSELECT、例のように句から列を省略することです。または、値を非COALESCEに変更するために使用することもできます。NULLNULL

于 2012-03-20T23:06:44.373 に答える
0

あなたはこのようなことをすることができます:

SELECT id, 
      'code' AS a_type, code AS a_value
  FROM story
UNION
SELECT id, 
      'artist' AS a_type, artist AS a_value
  FROM story
UNION
SELECT id, 
      'argument' AS a_type, argument AS a_value
  FROM story
UNION...

しかし、それがあなたにとって良さそうな場合は、おそらくデザインを変更する必要があります。

于 2012-03-21T08:52:42.310 に答える
0

質問の最後の選択に行ってみませんか? それらが必要ない場合は、追加しないでください。Select *値に関係なく、すべてのフィールド (列) を返します。

PS: これは多値フィールドのようなにおいがするので、避ける必要があります。

chars varchar(100) not null
于 2012-03-20T23:03:41.400 に答える