3

Stackoverlflowの寛大なコーダーの助けを借りてPHP+MySQLを学び、最初の機能データベースの終わりに近づいていますが、行き詰まっています。

ユーザーが個人または家族ごとに部屋のタイプを選択するデータベースを設定しようとしています(合計12人まで)。フォームは、各人に部屋のカテゴリが割り当てられるように設定されています(製品は部屋ごとではなく、人ごとに販売されるため)。利用可能な部屋のタイプは、SGL、DBL(最大2人)、TPL(最大3人)、およびQUD(最大4人)です。

ツアー価格と呼ばれる各部屋タイプの入力された価格のテーブルがあります。これらの価格は、ツアー開始日と呼ばれる別のテーブルにツアー開始日に基づいて異なります。

基本的に、私は各人に選択された部屋のタイプを調べ、関連する部屋の価格を調べ、部屋のタイプごとの占有者にカウントし、価格×部屋のタイプの数量を掛けるコードを書きたいと思います(隣に一人あたりの料金を表示します各人)と、すべての部屋を合わせた合計費用を要約します。

  • 価格表には「Id、date、SGL、DBL、TPL、QUD」の行があります
  • クライアントテーブルには「ID、名前、購入したツアー」の行があります
  • 予約テーブルには行があります*"Id、client_id、tour_id、tourdate_id、roomtype" *
  • ツアーテーブルには行があります*"Tour_id、ツアー名、販売開始/終了" *
  • ツアー日程テーブルには行があります*"Tourdate_id、tour_id、date1、date2、date3、... date25" *

例: ツアールームの料金(1人あたり)

  • 2012年5月1日ツアー-SGL=$ 300; DBL = $ 150; TPL = $ 100; QUD = $ 75
  • 2012年10月1日ツアー-SGL=$ 500; DBL = $ 250; TPL = $ 166.67; QUD = $ 125

ユーザーが予約したい-2012年5月1日のツアーで8人に1SGL、2 DBL、+1TPL。

したがって、結果の確認表示は次のようになります(通常のHTMLとともに:'ありがとうございます、あなたは最高の顧客です..何とか、何とか'すでに行ってもいいです):

  • 人1)SGL $ 300
  • 人2)DBL $ 150
  • 人3)DBL $ 150
  • 人4)DBL $ 150
  • 人5)DBL $ 150
  • 人6)TPL $ 100
  • 人7)TPL $ 100
  • 人8)TPL $ 100

合計価格=1x$ 300 + 4x $ 150 + 3x $ 100 + 0x $ 75 = $ 1200

システムのhtmlフォームの設定と、クエリの挿入セクションを取得しました。データはデータベースに投稿されています。計算クエリ(予約確認ページ用)については、次のようになりました。

$selectedDate = $tourstart
$query = "SELECT `sgl`, `dbl`, `tpl`, `qud` FROM tourprices WHERE `tour_id` = $tour AND `tourstart` = $tourstart";
$query .= "COUNT `sgl` as SglRmCount FROM `clients`";
$query .= "COUNT `dbl` as DblRmCount FROM `clients`";
$query .= "COUNT `tpl` as TplRmCount FROM `clients`";
$query .= "COUNT `qud` as QudRmCount FROM `clients`";
$result = $pdo->query($query);
?>
  • a)これがクエリの最も重要なものであるかどうかはわかりません。
  • b)私のSELECTクエリは、判断できる限り正しいですか?
  • c)数学をクエリに導入するにはどうすればよいですか(または、これはクエリの外部で行われますか?もしそうなら、どのように成文化しますか?)。

前もって感謝します。

4

1 に答える 1

0

作成したクエリは機能しません。カウントが正しく使用されていません。カウントは、次のように選択フィールドから数値を返すことを意味します。

SELECT COUNT(`sgl`) FROM your_table WHERE your_value = 0;

これは、返されたレコード数の合計である単一の数値を返します。作成したクエリは次のとおりです。

SELECT `sgl`, `dbl`, `tpl`, `qud` FROM tourprices WHERE `tour_id` = INPUTED_VALUE_FROM_PHP AND `tourstart` = YOUR_tourstart_VALUE COUNT `sgl` as SglRmCount FROM `clients` COUNT `dbl` as DblRmCount FROM `clients` COUNT `tpl` as TplRmCount FROM `clients`;

最初のカウントが正しく使用されていないため、このクエリは機能しません。次に、特定のクエリで1つのFROMしか呼び出せないためです。無関係な複数の値を返したいようです。その場合は、必要なものすべてに対して複数のSELECTクエリを作成できます。

また、クエリの行の計算は完全に可能であり、インラインでほぼすべてを行うことができます。ここにあなたがすることができるいくつかの基本的な数学のためのリソースがあります: http ://www.keithjbrown.co.uk/vworks/mysql/mysql_p9.php

于 2012-10-08T23:02:28.113 に答える