我想显示状态鸟类的分类列表看起来是这样的:条件Where子句(根据等级)
订购隼
家庭食肉鸟
游隼(法尔科Perergrinus)|爱达荷州
订单雀
家庭Turdidae
罗宾(鸫migratorius)|康涅狄格州,密歇根州,威斯康星州
我不知道如何使一个单一的查询,做我想做的,所以我想弄清楚一个解决方法。
这是我的基本查询:
$stm = $pdo->prepare("SELECT PLAN.Latin Latin2, PLAN.Common, PLAN.Group1, PLAN.Rank, PLAN.Family, PLAN.Order1, GS.Symbol, GS.Latin, GROUP_CONCAT(GG.Name ORDER BY GG.Name ASC SEPARATOR ', ') as Names, GG.IDParent
FROM gs_planimals PLAN
LEFT JOIN gs GS ON GS.Latin = PLAN.Latin
LEFT JOIN gw_geog GG ON GG.IDArea = GS.IDArea
WHERE PLAN.Group1 = :RefCat AND Rank != '55'
GROUP BY PLAN.Common
ORDER BY PLAN.N, GG.Name");
$stm->execute(array(
'RefCat'=>$RefCat,
));
然后我就可以用这个样式的行...
switch($Rank)
{
case 35:
$SymRow = '<tr class="Red Center"><td colspan="2" style="border-bottom: 1px solid #fff;"> <em>Order</em> <b>'.$Order.'</b> ('.$Common.')</td></tr>';
break;
case 45:
$SymRow = '<tr class="Blue"><td colspan="2">> <em>Family</em> <b>'.$Family.'</b> ('.$Common.')</td></tr>';
break;
case 65:
$SymRow = '
<tr>
<td class="Symbol">>> <a href="'.$GZ_URL.'/life/'.$LatinL.'" title="'.$Symbol.' ('.$Latin2.')">'.$row['Common'].'</a> (<em>'.$Latin2.'</em>)</td>
<td class="Place"><a href="/world/'.$PlaceL.'" title="'.$Place.'">'.$PlaceGroup.'</a> </td>
</tr>
';
break;
default:
$SymRow = '';
break;
}
...其中的第35级=订单,45 =一个家庭和65 =一个物种。这是有效的,但它在表格gs_planimals中显示与鸟有关的所有东西。我只想展示美国国家鸟类及其祖父母(家庭)和祖父母(订单)。
如果我修改WHERE子句来指示地理父母,像这样...
WHERE PLAN.Group1 = 'bird' AND Rank != '55' **AND GG.IDParent = 'usa'**
然后,它适用于品种(排名65)。然而,根本没有家庭或订单显示,大概是因为家庭和订单没有链接到表gs或gw_geog。
所以我想知道是否有写的方式有条件的WHERE子句,这样的事情...
WHERE PLAN.Group1 = 'bird' AND Rank != '55' [AND **- if Rank = 65 -** GG.IDParent = 'usa']
如果我能做到这一点,那么该表应仍显示每一笔订单和家庭,但我可以将一些PHP开关放在一起,手动删除我不想显示的订单和家庭。
无论如何,现在没有人如何修改这样的where子句吗?如果没有,你能否提出另一种解决方法?
有趣。目前它不工作;它仍然显示表格gs_planimals中的所有鸟类分类。我认为这个问题可能与GROUP条款有关,但我在那里没有任何运气。如果我完全删除GROUP BY PLAN.Common,则什么都不显示。无论如何,我认为你给了我正确的答案,但我只需要稍微玩一下我的查询来弄清楚发生了什么。谢谢! – 2014-08-31 18:16:13
我给出的答案解释了如何返回没有与GG匹配的行的行。在WHERE子句中使用该谓词,您将只获得具有匹配的GG行的行。我不理解你想要返回的一组行的要求。 – spencer7593 2014-08-31 18:27:19
如果我想显示美国国家鸟类列表,那么我只想显示与1)鸟类和2)美国状态相关的行。这在物种层面上很容易实现(等级= 65),因为物种在GS表中列出,每一行都与表gw_geog链接。但是,家庭和订单只列在平面图中,我不知道如何将它们与其他表格相关联。然而,我刚想出了一个解决方法... – 2014-08-31 18:30:38