所以,我已經投入了自己喜愛的圖片表,我無法弄清楚如何得到它的正常工作如何使用兩個MySQL表在一個聲明中
基本上,這是設置:
ImageFavs
FavID, UserID, ImgID
ImageList
ImgID, SiteID
我想它選擇從收藏表20幅左右圖像,但只有在圖像列表表
匹配SITEID是那些這是我此刻的代碼,但它在我看來,它會從收藏夾中選擇20張圖像,然後只在匹配的網站實際上是chec時才顯示它們糟透了。
#select matching sites
for($i=0;$i<count($sites)-1;$i++){
$siteinfo = explode("-",$sites[$i]);
$siteid = $siteinfo[0];
$sitegroup = $siteinfo[1];
$selection[$siteid]="exists";
if($i!=0){
$sqlextra .= " OR ";
}
else{
$sqlextra = "AND (";
}
$sqlextra .= "SiteID='".$siteid."'";
}
if(!empty($sqlextra)){
$sqlextra .= ")";
}
else{
$sqlextra = "AND SiteID='-1'";
}
#show favourites
if($_GET['f']==1){
$sql="SELECT * FROM ImageFavs WHERE UserID='".$_SESSION['User_ID']."' AND Active = '1' ORDER BY RAND() LIMIT 20";
#(rand is just me being lazy, eventually I'll figure out how to separate it onto pages)
$result = mysql_query($sql);
$num = mysql_numrows($result);
if($num>0){
while ($row=mysql_fetch_array($result, MYSQL_BOTH)){
if(empty($sqlextra2)){
$sqlextra2 = " AND (";
}
else{
$sqlextra2 .= " OR ";
}
$sqlextra2 .= "ImgID='".$row['ImgID']."'";
}
$sqlextra2 .= ")";
}
}
#don't show favourites
if(empty($sqlextra2)){
$sqlextra2 = " ORDER BY RAND() LIMIT 20";
}
$sql="SELECT * FROM ImageList WHERE Valid='1' ".$sqlextra.$sqlextra2;
從這個這個輸出$ sql中似乎是它可以是,但這樣更加簡潔,它的一個例子是這樣的
SELECT * FROM ImageList WHERE Valid='1' AND (SiteID='6') AND (ImgID='5634' OR ImgID='8229' OR ImgID='9093' OR ImgID='5727' OR ImgID='7361' OR ImgID='5607' OR ImgID='7131' OR ImgID='5785' OR ImgID='7339' OR ImgID='5849' OR ImgID='7312' OR ImgID='5641' OR ImgID='8921' OR ImgID='7516' OR ImgID='7284' OR ImgID='5873' OR ImgID='8905' OR ImgID='7349' OR ImgID='7392' OR ImgID='8725')
而且,當我在這裏,會有一個非資源沉重的方式來計算每個網站用戶的收藏數量?
這不是什麼大事,只是在個人網站上亂搞,看看我能做些什麼。
謝謝你,你有點讓它很容易理解,所以我想我可以從現在開始做類似的事情在:) – Peter
哦,還有一件事,我試圖數數值,它給了一個錯誤,所以我查了一下,發現你需要使用group by。我試過'GROUP BY l.ImgID,l.SiteID,f.FavID'和一些其他組合,但它不起作用,你會碰巧知道如何做到這一點? – Peter
你想知道總共有多少條記錄或返回多少條記錄? – Machavity