我有一个关于 VIEW 范围的问题。我是 mysql 新手,我正在创建一个包含汽车信息的网站。
这个特定 php 页面的设置是我从数据库中的几个表创建一个视图以显示给用户。然后,用户可以选择过滤数据以消除在规格方面不符合他/她要求的车辆。因此,随着每个过滤器的应用越来越少,剩下的车辆也越来越少。此过滤器通过更新页面部分的 AJAX 调用应用于原始 VIEW。
用户还可以选择重置他的选择并返回到原始页面选择,也可以使用 AJAX 调用。
因此,只要用户在页面中,我针对该特定用户的原始视图就需要保持“活动”状态。
问题是,希望网站上同时有很多访问者,访问同一个页面,并且可能同时创建同一个视图。
mysql 在这方面是如何工作的?每个用户创建的 VIEW 是否特定于该会话,或者来自不同用户的每个新 CREATE 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>