2012-05-01 1 views
0

合計価格を照会する最良の方法は何ですか?MySQLクエリ - 'CAST' 'CONCAT' - データのいくつかの行に特定の量を掛け、個々の合計を£の新しい列に表示する方法は?

いくつかの行のデータを一定の割合で掛け、それぞれの合計をデータベースの£の新しい列に表示したいですか?

構文は何ですか?

編集:

私は顧客の負荷を持っています。いくつかの注文は1つだけ、いくつかの複数の注文をしています。注文ごとに£1.50を請求し始めたいので、注文額を£1.50でx倍にして、それを£の新しい列に表示します。たとえば、4つの注文を持つ顧客は、x1.50である必要があります。これは、3列目に£6.00を表示するなど... 1.st列は名前、2列目は注文金額です。 3列目は合計価格である必要があります。

SELECT CONCAT_WS(" " 
       , c.customer_title 
       , c.customer_fname 
       , c.customer_sname 
      ) AS Customer 
      , COUNT(O.order_name) AS Ordertotal 
      , concat('£' * 1.5) TotalPrice 
FROM Order O, Friend F, Customer C, FriendOrder 
WHERE C.customer_id = F.Customer_id 
AND F.Friend_id = FriendOrder.friend_id 
AND O.order_id = FriendOrder.order_id 
GROUP BY Customer 
ORDER BY C.customer_sname, C.customer_fname 
+3

どのようなデータが表示されますか?どの列タイプですか? – dweiss

+0

私は多くの顧客を持っています。いくつかの注文は1つだけ、いくつかの複数の注文をしています。注文ごとに£1.50を請求し始めたいので、注文額を£1.50でx倍にして、それを£の新しい列に表示します。たとえば、4つの注文を持つ顧客は、x1.50である必要があります。これは、3列目に£6.00を表示するなど... 1.st列は名前、2列目は注文金額です。 3列目は合計価格である必要があります。希望は意味がある – user1335184

+0

@ user1335184 - ようこそstackoverflow。それは目標の説明です。欠落しているのは、テーブル構造(列とデータ型など)と場合によってはサンプルデータだけです。詳細を追加するために質問を更新することができます。より正確な詳細があれば、より正確な回答が得られます:) – Leigh

答えて

0

:しかし、それは私が注文の*計算のための£値を表示したい第三欄のBLOB値を返すだ、それは注文をカウントされます :それは、コメントからのセンス

アップデートを行いホープタスクを分離し、計算をSQLプログラミングに任せ、フロントエンドに使用するプログラミング言語にプレゼンテーションすることがベストプラクティスです。

したがって、SQLではネイティブ*演算子を使用する必要があります。クエリは次のようになります。

SELECT `column_1` * `column_2` as `product`; 

これは、「product」という名前の列に2つの列の積を返します。

£記号は書式設定しています。あなたは情報を提示するために書いたアーキテクチャに任せておくべきです。

select c.name, count(*) orderAmount, concat('£', count(*) * 1.5) totalPrice 
from customers c 
join orders o on c.customerId = o.customerId 
group by c.customerId, c.name 
+0

あなたのご意見ありがとうございます。しかし、私は合計を行い、毎回£1.50ずつ注文番号を掛けて顧客に請求し、その合計金額を3列目に表示したいと思っています。そのため、3列目を表示する必要があります私の質問からの金額... – user1335184

+0

はい、私は上記のコメントの前に投稿を開始しました。 – GRY

+0

これがより役立つことを願っています。 'customer_number '='(some#) 'のところでSELECT COUNT(*)* 1.5を' total' FROM customersとして返します。 – GRY

0

ので、あなたのデータとフィールドの説明の不足の想像力の多くを適用すると、これはトリックを行う必要がありますそれは混乱している問題を見つけ出すためです。 - すべてがブロブ一部を除いて答えていたように見えます

ここでは、最終的な結果である:「塊」を避けるために

SELECT 
    CONCAT_WS(
     " ", 
     c.customer_title, 
     c.customer_fname, 
     c.customer_sname 
    ) AS Customer, 
    COUNT(*) AS Ordertotal, 
    CONCAT('£', cast(count(*) * 1.5 as char)) AS TotalPrice 
FROM Order O 
INNER JOIN FriendOrder fo 
ON O.order_id = fo.order_id 
INNER JOIN Friend F 
ON fo.friend_id = F.Friend_id 
INNER JOIN Customer C 
ON F.Customer_id = C.customer_id 
GROUP BY Customer 
ORDER BY C.customer_sname, C.customer_fname 

、あなたが表示文字列を作成しているので、charにキャストします。クエリのスニペットは次のとおりです。

cast(count(*) * 1.5 as char) 
+0

しかし、これまでのところ、私はこれを持っていますが、注文数をカウントしていますが、注文の*計算に£値を表示したい3列目の 'BLOB'値が返されています:SELECT CONCAT_WS( ""、c。顧客名 AS注文合計、連結( '£' * 1.5)合計金額 オーダーO、フレンドF、得意先C、フレンド注文 WHERE C.customer_id = C.customer_sname、C.customer_fname – user1335184

+0

任意のアイデア@Mosty Mostacho BYカスタマー ORDER BY F.Customer_id とF.Friend_id = FriendOrder.friend_id AND O.order_id = FriendOrder.order_id GROUP? – user1335184

+0

@ user1335184私が答えて書いたように、 'concat( '£' * 1.5)'は使わないでください。 'concat( '£'、count(*)* 1.5)'を使ってください。 –

0

は、あなたがに答えを追加してはいけません。(例えばPHPやJava)

関連する問題