Итак, я положил в стол любимых изображений, и я не могу понять, как получить это работает правильноКак использовать два 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')
Кроме того, в то время как я здесь, было бы там быть не ресурс тяжелый способ подсчитать количество избранных для пользователя на веб-сайт?
Это не для чего-то большого, просто возитесь на личном веб-сайте, чтобы увидеть, что я могу сделать.
Спасибо, человек, вы легко поняли, поэтому я думаю, что с тех пор я смогу сделать подобные вещи on :) – Peter
О, еще одна вещь, я пытался подсчитать значения, и это дало ошибку, поэтому я искал ее и обнаружил, что вам нужно использовать группу. Я пробовал «GROUP BY l.ImgID, l.SiteID, f.FavID» и несколько других комбинаций, но это не сработает, не знаете ли вы, как это сделать? – Peter
Вы хотите знать, сколько записей в целом или сколько записей было возвращено? – Machavity