|
|
|
| У меня есть база товаров + к ним идет JOIN с таблицей картинок к этим товаром.
Мне их нужно вывести неповторяющимися, с картинками. DISTINCT не проходит, потому что товар один и тот же, но у него может быть несколько картинок, поэтому DISTINCT и отпал...
$sql = "SELECT DISTINCT a.*, ct.cityname as cityname, UNIX_TIMESTAMP(a.timestamp) AS timestamp, UNIX_TIMESTAMP(a.createdon) AS createdon, UNIX_TIMESTAMP(a.expireson) AS expireson,p.picfile as picfile,cat.catid,cat.catname as catname,scat.subcatname as subcatname, UNIX_TIMESTAMP(feat.featuredtill) AS featuredtill $xfieldsql
FROM $t_ads a
INNER JOIN $t_subcats scat ON scat.subcatid = a.subcatid
INNER JOIN $t_cats cat ON scat.catid = cat.catid
INNER JOIN $t_cities ct ON a.cityid = ct.cityid
LEFT OUTER JOIN $t_adpics p ON a.adid = p.adid AND p.isevent = '0'
LEFT OUTER JOIN $t_adxfields axf ON a.adid = axf.adid
LEFT OUTER JOIN $t_featured feat ON a.adid = feat.adid AND feat.adtype = 'A'
WHERE a.subcatid = $subcatid
AND a.cityid = $cityid
AND $visibility_condn_admin
AND a.adid != ".$_GET['adid']."
".$similar_jobs_where."
".$similar_jobs_order."
LIMIT ".constant("SIMILAR_JOBS_LIMIT");
|
картинки - это picfile, строки выдаются одинаковые (товары), только картинки разные. | |
|
|
|
|
|
|
|
для: Sturmvogel
(12.02.2012 в 20:42)
| | Поэтому по сути нужен запрос, который бы не учитывал это поле picfile в DISTINCT, но добавляло в результат запроса. | |
|
|
|
|
|
|
|
для: Sturmvogel
(12.02.2012 в 20:42)
| | >DISTINCT не проходит, потому что товар один и тот же, но у него может быть несколько картинок,
>поэтому DISTINCT и отпал...
А GROUP BY? Как раз вроде по нему задача? | |
|
|
|
|
|
|
|
для: cheops
(12.02.2012 в 21:38)
| | Запрос
$sql = "SELECT a.*, ct.cityname as cityname, UNIX_TIMESTAMP(a.timestamp) AS timestamp, UNIX_TIMESTAMP(a.createdon) AS createdon, UNIX_TIMESTAMP(a.expireson) AS expireson,p.picfile as picfile,cat.catid,cat.catname as catname,scat.subcatname as subcatname, UNIX_TIMESTAMP(feat.featuredtill) AS featuredtill $xfieldsql
FROM $t_ads a
INNER JOIN $t_subcats scat ON scat.subcatid = a.subcatid
INNER JOIN $t_cats cat ON scat.catid = cat.catid
INNER JOIN $t_cities ct ON a.cityid = ct.cityid
LEFT OUTER JOIN $t_adpics p ON a.adid = p.adid AND p.isevent = '0'
LEFT OUTER JOIN $t_adxfields axf ON a.adid = axf.adid
LEFT OUTER JOIN $t_featured feat ON a.adid = feat.adid AND feat.adtype = 'A'
WHERE a.subcatid = $subcatid
AND a.cityid = $cityid
AND $visibility_condn_admin
AND a.adid != ".$_GET['adid']."
".$similar_jobs_where."
".$similar_jobs_order."
GROUP BY a.adid
LIMIT ".constant("SIMILAR_JOBS_LIMIT");
|
не проходит вовсе. | |
|
|
|
|
|
|
|
для: Sturmvogel
(12.02.2012 в 21:44)
| | Таблица a ($t_ads) - это кто? Товары или картинки? | |
|
|
|
|
|
|
|
для: cheops
(12.02.2012 в 21:46)
| | товары. Картинки - это $t_adpics. И они участвуют в SELECT как p.picfiles | |
|
|
|
|
|
|
|
для: Sturmvogel
(12.02.2012 в 22:01)
| | По картинкам бы и нужно группировать, товаров всегда меньше чем картинок, поэтому вы будете получать только их часть. А вот если сгруппируете по картинкам, отсортировав по двум полям "товар, картинка", тогда вы должны получить все картинки. | |
|
|
|
|
|
|
|
для: cheops
(12.02.2012 в 22:02)
| | Мне нужно, чтобы товары не повторялись, а картинка бралась какая-то из таблицы с картинками, неважно какая. Но еще раз повторюсь, главное, чтобы товары не повторялись, а картинка может быть любая, связанная с этим товаром | |
|
|
|
|
|
|
|
для: Sturmvogel
(12.02.2012 в 22:04)
| | Хм... тогда у вас сейчас должна идти первая картинка? Если не сложно опишите, что в выводе не так (у нас его перед глазами нет, сложно сориентироваться). | |
|
|
|
|
 16.4 Кб |
|
|
для: cheops
(12.02.2012 в 22:06)
| | Прикрепил картинку.
Там видно, что выводятся похожие товары. Но по сути, это один и тот же товар, только картинка разная, взятая из таблицы с изображениями, связанная с этим товаром.
А нужно чтобы вывелся только один товар. А какая картинка будет показана из всех, связанных с ним - неважно. | |
|
|
|
|
|
|
|
для: Sturmvogel
(12.02.2012 в 22:01)
| | У вас еще проблема в том, что картинки присоединяются к товарам при помощи LEFT JOIN, т.е. количество записей всегда будет равно количеству товаров... если вам хочется этим запросом извлечь все картинки, то следует к ним присоединять товары, т.е. либо RIGHT JOIN использовать, либо таблицу картинок поместить слева от LEFT JOIN, а таблицу товаров справа. | |
|
|
|