在一个查询中显示两个 MySQL 选择
Display two MySQL selects in one query
我有一个表格,用户可以在其中输入年龄和 select 性别,然后 returns 具有该特定性别的特定年龄的所有数据。
这是 SQL 查询,我必须找到此数据:
if($_POST['sRetrieve1'])
$queryRetrieve = mysql_query( "SELECT TIMESTAMPDIFF(YEAR, sBirthday, CURDATE())
AS sBirthday FROM staffData WHERE TIMESTAMPDIFF(YEAR, sBirthday, CURDATE()) >
'".$_POST['qRetrieveAge']."' AND sGender='".$_POST['qRetrieveGender']."'");
然后通过
打印出来
echo ' <table id="myTable" class="tablesorter">';
echo ' <thead> ';
echo ' <tr> ';
echo ' <th>Gender</th> ';
echo ' <th>Fullname</th> ';
echo ' <th>Age</th> ';
echo ' <th>Job Title</th> ';
echo ' <th>Email</th> ';
echo ' <th>Contact no.</th> ';
echo ' <th>Address</th> ';
echo ' <th>Date Joined</th> ';
echo ' </tr> ';
echo ' </thead> ';
echo ' <tbody> ';
while($info = mysql_fetch_array($queryRetrieve, MYSQL_ASSOC))
{
echo ' <tr> ';
echo ' <td>'.$info["sGender"].'';
echo ' <td>'.$info["sFN"].'';
echo '  '.$info["sSN"].'';
echo ' <td>'.$info["sBirthday"].'</td> ';
echo ' <td>'.$info["sJobTitle"].'';
echo ' <td>'.$info["sEmail"].'</td>';
echo ' <td>'.$info["sPhone"].'</td> ';
echo ' <td>'.$info["sAddress"].'</td> ';
echo ' <td>'.$info["sDateJoined"].'</td> ';
echo ' </tr> ';
}
但这只显示 sBirthday,我该怎么做才能让其他字段都在字段中?
- 我不能只做
select *
的原因是因为sBirthday 字段本来只是一个生日,因此需要计算年龄。
您需要添加您想要 select 的字段,如下所示:
$queryRetrieve = mysql_query( "SELECT TIMESTAMPDIFF(YEAR, sBirthday, CURDATE())
AS sBirthday,sGender, sFN [ALL THE REST] FROM staffData WHERE TIMESTAMPDIFF(YEAR, sBirthday, CURDATE()) >
'"
.$_POST['qRetrieveAge']."' AND sGender='".$_POST['qRetrieveGender']."'");
用逗号分隔的字段列表替换 [ALL THE REST]
如果您仍想使用 *(但通常最好不要使用),您可以这样做:
$queryRetrieve = mysql_query( "SELECT *, TIMESTAMPDIFF(YEAR, sBirthday, CURDATE())
AS sBirthdayXXXXX FROM staffData WHERE TIMESTAMPDIFF(YEAR, sBirthday, CURDATE()) >
'"
.$_POST['qRetrieveAge']."' AND sGender='".$_POST['qRetrieveGender']."'");
那就改
echo ' <td>'.$info["sBirthday"].'</td> ';
到
echo ' <td>'.$info["sBirthdayXXXXX"].'</td> ';
我有一个表格,用户可以在其中输入年龄和 select 性别,然后 returns 具有该特定性别的特定年龄的所有数据。
这是 SQL 查询,我必须找到此数据:
if($_POST['sRetrieve1'])
$queryRetrieve = mysql_query( "SELECT TIMESTAMPDIFF(YEAR, sBirthday, CURDATE())
AS sBirthday FROM staffData WHERE TIMESTAMPDIFF(YEAR, sBirthday, CURDATE()) >
'".$_POST['qRetrieveAge']."' AND sGender='".$_POST['qRetrieveGender']."'");
然后通过
打印出来echo ' <table id="myTable" class="tablesorter">';
echo ' <thead> ';
echo ' <tr> ';
echo ' <th>Gender</th> ';
echo ' <th>Fullname</th> ';
echo ' <th>Age</th> ';
echo ' <th>Job Title</th> ';
echo ' <th>Email</th> ';
echo ' <th>Contact no.</th> ';
echo ' <th>Address</th> ';
echo ' <th>Date Joined</th> ';
echo ' </tr> ';
echo ' </thead> ';
echo ' <tbody> ';
while($info = mysql_fetch_array($queryRetrieve, MYSQL_ASSOC))
{
echo ' <tr> ';
echo ' <td>'.$info["sGender"].'';
echo ' <td>'.$info["sFN"].'';
echo '  '.$info["sSN"].'';
echo ' <td>'.$info["sBirthday"].'</td> ';
echo ' <td>'.$info["sJobTitle"].'';
echo ' <td>'.$info["sEmail"].'</td>';
echo ' <td>'.$info["sPhone"].'</td> ';
echo ' <td>'.$info["sAddress"].'</td> ';
echo ' <td>'.$info["sDateJoined"].'</td> ';
echo ' </tr> ';
}
但这只显示 sBirthday,我该怎么做才能让其他字段都在字段中?
- 我不能只做
select *
的原因是因为sBirthday 字段本来只是一个生日,因此需要计算年龄。
您需要添加您想要 select 的字段,如下所示:
$queryRetrieve = mysql_query( "SELECT TIMESTAMPDIFF(YEAR, sBirthday, CURDATE())
AS sBirthday,sGender, sFN [ALL THE REST] FROM staffData WHERE TIMESTAMPDIFF(YEAR, sBirthday, CURDATE()) >
'"
.$_POST['qRetrieveAge']."' AND sGender='".$_POST['qRetrieveGender']."'");
用逗号分隔的字段列表替换 [ALL THE REST]
如果您仍想使用 *(但通常最好不要使用),您可以这样做:
$queryRetrieve = mysql_query( "SELECT *, TIMESTAMPDIFF(YEAR, sBirthday, CURDATE())
AS sBirthdayXXXXX FROM staffData WHERE TIMESTAMPDIFF(YEAR, sBirthday, CURDATE()) >
'"
.$_POST['qRetrieveAge']."' AND sGender='".$_POST['qRetrieveGender']."'");
那就改
echo ' <td>'.$info["sBirthday"].'</td> ';
到
echo ' <td>'.$info["sBirthdayXXXXX"].'</td> ';