• ベストアンサー

SQL文の書き方

商品  商品番号  単価   あああ  10     200 いいい  10     201 ううう    20     202 えええ  20     203 おおお  40     204 上のような1つのテーブルから単価の一番高いものの、商品と商品番号だけを表示させたい場合はどのようなsql文にすればいいのでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

SELECT TOP 1 商品コード, 商品名 FROM 受注履歴 ORDER BY 受注履歴.価格 DESC; これは Access のSQL文。 SQL SERVER でも ORDER BY 句で単価の高い順に並べトップの1行のみを取得するという考え方は同じ。ただし、Top句の書き方は TOP 1⇒TOP(1) になります。 http://msdn.microsoft.com/ja-jp/library/ms189463.aspx

ryiryilp
質問者

お礼

画像までつけていただいて、分かりやすい解説ありがとうございました。 なんとか解決することができました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

回答No.4

補足: Top句と同値表示 >まぁ同額でトップが複数あった場合に複数出したいとしたらは困るけれども・・・ SELECT TOP(1) WITH TIES ・・・・・ で、それは解決できないのかな?15年も前の記憶だから、定かではないが・・・。

ryiryilp
質問者

お礼

ありがとうございます。 解決しました。

全文を見る
すると、全ての回答が全文表示されます。
  • yukitakao
  • ベストアンサー率44% (16/36)
回答No.2

前の人みたいに副問い合わせ使うのもいいけど↓みたいな書き方も select top 1 商品,商品番号 FROM テーブル order by 単価 desc まぁ同額でトップが複数あった場合に複数出したいとしたら↑は困るけれども SQLのコストはだいぶ低いはず。

ryiryilp
質問者

お礼

今回は、副問い合わせを使い、なんとか解決しましたが今後の参考にさせていただいます。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • kawais070
  • ベストアンサー率52% (2242/4282)
回答No.1

select 商品,商品番号 from テーブル where 単価 in (select max(単価) from テーブル) って感じ?試してないけど。

ryiryilp
質問者

お礼

できました。 ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • SQL文について

    つい最近SQL文を勉強し始めたのですが、わからないことがあるので質問します。 関係 発注表 商品番号 業者番号 数量 1122 2323 1 1124 2323 2 1123 2000 1 関係  商品表 商品番号 単価 1122   400 1124   600 という様な関係が存在した時、発注した合計金額が1000円を越えた業者のみを抜き出したい時はどのようなSQL文をかけばいいのでしょうか? いまいち分からないので是非解答お願いします。

  • sql文の書き方について

    <A> 商品  商品番号  単価   あああ  10     200 いいい  10     201 ううう   20     202 えええ  20     203 おおお  40     204 <B> 商品番号  会社名   数  10       AA       3 20       BB     2 30        CC    1 40         DD    3       この2つの表を結合して 商品  商品番号  会社名  単価   あああ  10       AA   200 いいい  10       AA   201 ううう   20       BB   202 えええ  20       BB   203 おおお  40       DD   204 このようにしたいのと <C> 商品  商品番号  単価  グループ aaa      1      0         0 iii     2        0          0 uuu      3      0        0 あああ   10      201     aaa いい   20      202     aaa ううう   20       203     iii おおお  40      204    uuu この表を 商品  商品番号  単価  グループ  あああ あああ  10       201   aaa       1 いい   20       202   aaa        1 ううう   20       203   iii        2 おおお  40       204   uuu       3 このようにしたいのですが、どういったsql文を書けばいいのか分かりません 表がとても見にくいと思いますが、よろしくお願いします。

  • SQL文で表すには

    以下の表を用いてSQL文を作成しようと思ってるんですが、途中までしか思いつかないので、どなたかご教授のほうよろしくお願いします。 shohin shiire 商品番号 商品名 単価   仕入番号 仕入先名  0001 みかん 100     001  A 0002 りんご 200     002 B 0003 ぶどう 300     003   C tran 購入番号 商品番号 仕入番号 数量 1 0001 001 1 2 0001 002 2 3 0001 003 3 4 0001 001 4 5 0001 002 5 6 0002 003 6 7 0002 001 7 8 0002 002 8 9 0003 003 9 10 0003 001 10 11 null 0004 20 これを以下のように出力するためにはどのようなSQL文を書けばよいですか? 商品番号 商品名 仕入番号 仕入先名 数量 単価 金額  0001 みかん 001    A   5 100 500  0001 みかん 002    B   7 100 700  0001 みかん 003    C   3 100 300  0002 りんご 001    A   7 200 1400  0002 りんご 002    B   8 200 1600  0002 りんご 003    C   6 200 1200  0003 ぶどう 001    A   10 300 3000  0003 ぶどう 003    B   9 300 2700  0004 null 004   null   20 null null ここまでは正しいと思うのですが・・・ select shohin.商品番号, shohin.商品名, shiire.仕入番号,     tran.数量, shohin.単価, tran.数量 * shohin.単価 as 金額 よろしくお願いします。

  • SQL文について

    SQL文について 現在一度に検索ができずに困っているため質問します。 データベースに男性テーブルと女性テーブルがあります。 男性テーブル ・番号 ・名前 女性テーブル ・番号 ・名前 このテーブルより自分の父、母、母の父を表示させたいのですが SELECT 男性テーブル.名前, 女性テーブル.名前, (※母の父を表示させたい) FROM 男性テーブル, 女性テーブル WHERE 男性テーブル.番号=父の番号 AND 女性テーブル.番号=母の番号 このあと条件に (AND 男性テーブル.番号=母の父の番号) をつけることはできないためSQL文の書き方で困っています。 抽出データは複数なので※の部分にサブクエリを書くことができません。 何かよいSQLの書き方はありますでしょうか?

  • SQLの書き方(UPDATE文)

    SQLの書き方の質問です。 売上Tと商品Mというテーブルがあったとして、 売上Tには商品コード、数量、金額という項目が 商品Mには商品コード、単価という項目が それぞれあったとします。 売上Tの金額=売上T.数量×商品M.単価 この売上Tの金額を更新するのに、update文でできるだけシンプルに高速に動くSQL文を作成したいのですが、どのような書き方がよいと思いますか? 件数は例えば売上が100万件、商品が10万件あった場合を想定して。 以上よろしくお願いいたします。

  • SQL2005 クエリ文について

    いつもこちらで大変お世話になってます。 SQL2005です。 現在、「商品マスタ」というテーブルに、「単価」という列があり、ここには商品の単価が入っているのですが、「1663.2」 という様に小数点が入っているデータがあります。 これを切り捨てて「1663」という整数にしたいのですが、どの様なクエリ文になるのでしょうか? 先ほど、こちらでご指南頂き、データを1.05倍する、という更新は無事上手くいったのですが、小数点が出てしまいました。 どなたかご教授くださいませ。よろしくお願いします。

  • SQL文について

    商品表と注文表から、注文のある商品名を知るためのSQL文で、適切なものはどれか。 商品表(商品番号,商品名,単価) 注文表(注文番号,商品番号,注文数) 答えはこれ↓なんですが、なぜなのか分かりません。 SELECT 商品番号,商品名 FROM 商品表        WHERE EXISTS (SELECT * FROM 注文表 WHERE 商品番号 = 商品表.商品番号)

  • SQL2005 クエリ文について

    どなたか教えて下さい。 SQL2005ですが、「商品マスタ」というテーブルに、「単価」という列があるのですが、この「単価」の数値を1.05倍したいです。 300⇒315のように。 どのようなクエリになるのでしょうか? 検索掛けたのですが、同様の質問が見付かりませんでした。よろしくお願いします。

  • SQL文のエラー

    SQL文でエラーが表示されます。どの部分を修正すればいいですか? SQL文が長いので文字列を結合する演算子「.」を使って複数行に分けています。 エラー内容:SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= ? and product_id = product.id' at line 2 //商品番号だけでなく、商品名や価格も表示したいので商品情報を保持するproductテーブルと 結合する。 //全て取得するのでSELECTは* //favoriteテーブルにはcustomer_idとproduct_id //productテーブルにはid, name, price $sql = 'SELECT * FROM favorite, product' . 'WHERE customer_id = ? and product_id = product.id '; // ?に顧客番号を指定する。 // favoriteテーブルの商品番号(product_id列)と、productテーブルの商品番号(id列)が // 一致している行だけが必要なので、WHERE句に条件を追加する。

  • SQL文で質問

    SQL文で質問 いつもお世話になっております。 SQL文について質問です。 仮にですが、商品マスタというテーブルと、対応テーブルという二つのテーブルがあります。 対応テーブルには、商品コードが親コード、子コードといった形で構成されています。 対応テーブルのいくつかの親のコードを条件に、親コードと子コードを検索して、それぞれの商品名を検索したいと思っています。 現在、SQL文で、親コードに対応した商品名だけを取得しているのですが、子コードに対応する商品名も検索したいと思っています。 現在のSQL分としては、 SELECT 対応テーブル.親コード、商品マスタ.商品名、対応テーブル.子コード FROM 対応テーブル,商品マスタ WHERE 対応テーブル.親コード = 商品マスタ.商品コード AND 対応テーブル.親コード = 1000,1002,1004 このSQL文で検索した子コードで、商品マスタの商品名を検索したいのですが、どのようなSQLを書いたらよいのでしょうか。 ご教授願います。