1

2 つのテーブルの最初の列を 1 つの行に取得し、両方の列で並べ替える必要があります。これは私が書くことができたものですが、機能していません。

select title from movie 
union 
select reviewer_name from reviewer 
order by title,reviewer_name;

Mysql によると、reviewer_name は不明な列です。

ここに画像の説明を入力

4

4 に答える 4

2

映画のテーブル ddl とレビュアーの ddl を送っていただけますか? 両方のテーブルに存在する列は何ですか?

おそらくあなたが探しているものは、次のようなもので解決されるでしょう:

select 
  m.title, 
  r.reviewer_name 
from 
  movie m, 
  reviewer r
where
 m.movieid = r.movieid 
order by m.title, r.reviewer_name;

更新された質問の後、これを行うことができます:

select
  mo.title,
  rv.reviewer_name,
  ra.stars
from
  movie mo,
  reviewer rv,
  rating ra
where
  mo.movieid = ra.movieid
  and
  ra.reviewerid = rv.reviewerid
order by mo.title, rv.reviewer_name

msアクセスでもこれをすばやく実行しました。

SELECT 
  movie.title, 
  reviewer.reviewer_name, 
  rating.stars
FROM reviewer 
  INNER JOIN (movie INNER JOIN rating ON movie.movieid = rating.movieid) 
  ON reviewer.reviewerid = rating.reviwerid
ORDER BY movie.title, reviewer.reviewer_name

ここに画像の説明を入力

于 2013-05-03T13:11:36.050 に答える
1

2 つ (またはそれ以上) の select ステートメントを結合すると、最初の select ステートメントのフィールド名が出力に使用されます。したがって、出力には「タイトル」というフィールドのみが含まれます。出力に「reviewer_name」フィールドはありません。そのため、エラーが発生していました。

select title 
from movie 

union 

select reviewer_name 
from reviewer 

order by title;
于 2013-05-03T13:08:31.217 に答える
0

それを試してください:

SELECT * FROM (select title from movie union select reviewer_name from reviewer) as f order by title;

しかし、映画とレビュアーの間の結合がここにないと思います...

于 2013-05-03T13:10:18.693 に答える