VIEW の範囲について質問があります。私は mysql を初めて使用し、自動車情報の Web サイトを作成しています。
この特定の php ページのセットアップでは、データ バンク内のいくつかのテーブルから VIEW を作成して、ユーザーに表示します。その後、ユーザーはデータをフィルタリングして、仕様に関して自分の要件に適合しない車両を除外することができます。そのため、各フィルターが適用されるたびに、残っている車両が少なくなります。このフィルターは、ページのセクションを更新する AJAX 呼び出しで元の VIEW に適用されます。
ユーザーには、AJAX 呼び出しを使用して、選択をリセットして元のページ選択に戻るオプションもあります。
したがって、その特定のユーザーの元のビューは、ユーザーがページにいる限り「ライブ」のままにする必要があります。
問題は、多くの訪問者が同時にサイトにアクセスし、同じページにアクセスし、おそらく同じ VIEW を同時に作成することです。
mysql はその点でどのように機能しますか? 各ユーザーが作成する VIEW はそのセッションに固有のものでしょうか、それとも異なるユーザーからのすべての新しい CREATE VIEW が VIEW を上書きして混乱を引き起こしますか。最後のケースでは、どうすればその問題を回避できますか?
VIEW 自体は関係ないかもしれませんが、念のため以下に含めておきます。
ありがとう!
これは、ページ price_range.php から:
mysql_query("CREATE OR REPLACE VIEW vprice_range AS(
SELECT
brands.brand_id,
brands.brand,
models.model_id,
models.model,
segments.segment_id,
segments.segment,
versions.version_id,
versions.version,
versions.places,
motors.power,
motors.fuel as FUELTYPE,
measures.trunk,
cost_perf.to100,
cost_perf.maxspeed,
cost_perf.emission_co2,
cost_perf.mileagemix,
images.img_path,
prices.price,
prices.tag AS TAG1,
insurance.ins_yr1,
prices.matricule AS MATRICULE,
costs.tax_ct AS TAXES,
costs.fuel_ct AS FUEL,
costs.ins_ct AS INSURANCE,
costs.maint_ct AS MAINTENANCE,
costs.total_ct as Costs5yr,
(prices.matricule)+(prices.tag)+ (insurance.ins_yr1) as CostsAcq,
warranties.wr_year,
(COUNT(trimtype)) AS safety
FROM prices
INNER JOIN insurance USING (version_id)
INNER JOIN versions USING (version_id)
INNER JOIN costs USING (version_id)
INNER JOIN versiontrim USING(version_id)
INNER JOIN trims USING(trim_id)
INNER JOIN images USING (model_id)
INNER JOIN cost_perf USING ( cp_id)
INNER JOIN measures USING (measure_id)
INNER JOIN motors USING (motor_id)
INNER JOIN models USING (model_id)
INNER JOIN segments USING (segment_id)
INNER JOIN brands USING (brand_id)
INNER JOIN warranties USING(brand_id)
WHERE price BETWEEN $low AND $high
AND trimtype IN('sec', 'help')
AND models.active='Y'
AND versions.active='Y'
GROUP BY version_id
)");
そして、同じ price_range.php で、ユーザーが適用できるフィルター:
<div class="filter">
<h3>Refine your search with filter below:</h3>
<form id="filtermodel">
<p> Choose main specs:
<select id="powerselect" name="power" >
<option value="0"> cv plus que </option>
<option value="100">100 hp </option>
<option value="150">150 hp </option>
<option value="200">200 hp </option>
</select>
<select id="mileageselect" name="mileage" >
<option value="100"> Mileage moins que</option>
<option value="5">5l/100km </option>
<option value="6">6l/100km </option>
<option value="7">7l/100km </option>
</select>
<select id="co2select" name="co2" >
<option value="1000">Lower co2</option>
<option value="100"> 100 co2 </option>
<option value="150"> 150 co2 </option>
<option value="180"> 180 co2</option>
</select>
<select id="trunkselect" name="trunk" >
<option value="0">Bigger trunk </option>
<option value="300">300 l </option>
<option value="500">500 l </option>
<option value="700">700 l </option>
</select></p>
<p>Choose equipments:
<input class="hook1" type="checkbox" value="115" name="hook[0]"> Leather seats
<input class="hook1" type="checkbox" value="116" name="hook[1]"> Driver seat elect
<input class="hook1" type="checkbox" value="107" name="hook[2]"> Cruise control
</p>
<p> Cancel all selections: <input type="reset" id="reset" value=Reset /> </p>
</form>