我想顯示狀態鳥類的分類列表看起來是這樣的:條件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