我正在构建一个简单的销售和购买网站,并希望在第一页上列出最新广告。在我的数据库中,我有4个表。 USERS
,CARS
,ELECTRONICS
和COMPUTERS
。
三个项目表(CARS
,ELECTRONICS
和COMPUTERS
)中的每一个都包含DATESTAMP
,但我无法轻松对其进行排序在此DATESTAMP
之后使用MySQL和PHP。
它们都包含不同的列,但共有DATESTAMP
和SSN
(标识用户拥有广告的方式)。
我已尝试加入表格,在php中使用strtotime对它们进行排序..但我似乎无法让语法发挥作用。玩这个代码..但它变得非常复杂,我希望我能在纯SQL中更容易做到。它不完整但是......你可以看到我在想什么..
<?php
mysql_connect("localhost","root","");
mysql_select_db("project");
$SSN = utf8_decode(strip_tags($_GET['ssn']));
//firstname,lastname, email, phone, address, zipcode, district
$result = mysql_query("SELECT *
FROM CARS
WHERE CARS.SSN = '$SSN'");
$result2 = mysql_query("SELECT *
FROM ELECTRONICS
WHERE ELECTRONICS s.SSN = '$SSN'");
if (!$result) {
echo 'Could not run query: ' . mysql_error();
exit;
}
while($obj = mysql_fetch_object($result)) {
$arr[] = $obj;
}
echo '{"users":'.json_encode($arr).'}';
if (!$result2) {
echo 'Could not run query: ' . mysql_error();
exit;
}
while($obj = mysql_fetch_object($result2)) {
$arr[] = $obj;
}
echo '{"users":'.json_encode($arr).'}';
function mysort($a, $b) {
return(strtotime($b['datePosted']) - strtotime($a['datePosted']));
}
// pre-sort:
echo "<pre>Before:\n";
print_r($arr);
// do the sort:
usort($arr, 'mysort');
// show the result:
echo "After:\n";
print_r($arr);
echo "</pre>";
?>
答案 0 :(得分:0)
从设计的角度来看,您可以拥有一个ITEMS表,其中包含与所有类型的项相关的属性,例如ID,DATESTAMP,SSN。在每个与项目相关的表上都有ID PK,这些表与ITEMS表中相关项的ID相匹配。
ITEMS
ID DATESTAMP SSN
1 2011-01-01 12345
2 2011-01-02 12345
3 2011-01-04 54321
CARS
ID MANUFACTURER MODEL
1 Volvo V40
3 Volkswagen Beetle
COMPUTERS
ID BRAND PROCESSOR
2 Dell 386