|
|
|
| Добрый день.
Есть массив
Array
(
[0] => Array
(
[0] => 3
[1] => uploads/shop/3/
[2] => c3532a07aa63.jpg
)
[1] => Array
(
[0] => 3
[1] => uploads/shop/3/
[2] => 5f64cbb58156.jpg
)
[2] => Array
(
[0] => 1
[1] => uploads/shop/1/
[2] => 14639a31e99b.jpg
)
[3] => Array
(
[0] => 1
[1] => uploads/shop/1/
[2] => 0cfbeb78524a.jpg
)
[4] => Array
(
[0] => 1
[1] => uploads/shop/1/
[2] => ba54969ae035.jpg
)
[5] => Array
(
[0] => 2
[1] => uploads/shop/2/
[2] => a5ccc9abd789.jpg
)
[6] => Array
(
[0] => 2
[1] => uploads/shop/2/
[2] => 67e657cc8974.jpg
)
[7] => Array
(
[0] => 2
[1] => uploads/shop/2/
[2] => e6b1bcd3ac4f.jpg
)
)
|
как мне из него получить к примеру по номеру 1, первые две фотки? | |
|
|
|
|
|
|
|
для: dirol
(28.03.2013 в 12:30)
| | У массива нет номеров, есть либо индексы, либо ключи. О каких номерах речь? | |
|
|
|
|
|
|
|
для: confirm
(28.03.2013 в 12:43)
| | ну у меня получается что [0] => 3 вот по этим номерам
[0] => 1
[0] => 2
[0] => 3 | |
|
|
|
|
|
|
|
для: dirol
(28.03.2013 в 13:03)
| | вообще из базц mySQL
выводятся занчения
к при меру 1,2,3 это id в базе товара, во второй таблице лежат фотографии товара и вот надо вывести обязательно по 2 первые фотографии товара на одной страницы для сменны ее при наведении курсором.
вот я намочился вывод товара одним запросом стандартным , а фотографии все выводятся в массив и вот из массива по номерам товара выбрать по 2 фотографии | |
|
|
|
|
|
|
|
для: dirol
(28.03.2013 в 13:09)
| | А зачем помещать в массив, чтобы потом сделать вывод? При обработке запроса и выводите по две фото сразу. | |
|
|
|
|
|
|
|
для: confirm
(28.03.2013 в 13:15)
| |
CREATE TABLE IF NOT EXISTS `cms_images` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`cid` int(10) NOT NULL,
`catalog` varchar(150) DEFAULT '0',
`filename` varchar(300) NOT NULL,
PRIMARY KEY (`id`),
KEY `catid` (`catalog`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=43 ;
INSERT INTO `cms_images` (`id`, `cid`, `catalog`, `filename`) VALUES
(42, 2, 'uploads/shop/2/', 'e6b1bcd3ac4f.jpg'),
(41, 2, 'uploads/shop/2/', '67e657cc8974.jpg'),
(40, 2, 'uploads/shop/2/', 'a5ccc9abd789.jpg'),
(39, 1, 'uploads/shop/1/', 'ba54969ae035.jpg'),
(38, 1, 'uploads/shop/1/', '0cfbeb78524a.jpg'),
(37, 1, 'uploads/shop/1/', '14639a31e99b.jpg'),
(36, 3, 'uploads/shop/3/', '5f64cbb58156.jpg'),
(35, 3, 'uploads/shop/3/', 'c3532a07aa63.jpg');
|
как одним запросом к примеру вывести две первые фотографии каждой позиции?
с LEFT JOIN только одну получается как вторую или три вытащить? | |
|
|
|
|
|
|
|
для: dirol
(28.03.2013 в 13:21)
| | Нужно вложенным запросом получать фото и по 2. В раздел MySQL с такими вопросами, кому-то может быть тоже это нужно будет.
А если вы все кучей получили, то это еще не значит, что нужно формировать массив промежуточный, тем более, если его формировать, то не такой как у вас, так как он не отвечает вашей задаче. | |
|
|
|
|
|
|
|
для: dirol
(28.03.2013 в 13:21)
| |
SELECT id, cid, catalog, filename
FROM( SELECT *
, @n := if( @c=cid, @n+1, 1 )num
, @c := cid
FROM( SELECT * FROM cms_images ORDER BY cid, filename )t
JOIN( SELECT @c:=0 )c
JOIN( SELECT @n:=0 )n
)t
WHERE num <3
|
| |
|
|
|
|
|
|
|
для: Sfinks
(28.03.2013 в 14:50)
| | если честно чето не работает вообще не вкурил такой запрос | |
|
|
|
|
|
|
|
для: dirol
(28.03.2013 в 15:28)
| | На данных представленных Вами в 13:21 - работает 100%
Если "не работает" - это речь о параллельной теме, так там помоему надо только список полей дополнить.
Разбирайтесь =)
P.S. Выполните подзапросы частями:
SELECT * FROM cms_images ORDER BY cid, filename
|
SELECT *
FROM( SELECT * FROM cms_images ORDER BY cid, filename )t
JOIN( SELECT @c:=0 )c
JOIN( SELECT @n:=0 )n
|
SELECT *
, @n := if( @c=cid, @n+1, 1 )num
, @c := cid
FROM( SELECT * FROM cms_images ORDER BY cid, filename )t
JOIN( SELECT @c:=0 )c
JOIN( SELECT @n:=0 )n
|
Проанализируйте результаты....
Думаю разберетесь. | |
|
|
|
|
|
|
|
для: dirol
(28.03.2013 в 12:30)
| | Так как вы вытащили массив из базы, что вам мешает в конце этого запроса добавить LIMIT 2 и методом foreach вывести 2 картинки? | |
|
|
|