|
|
|
| в общем есть таблицы:
альбомы
CREATE TABLE `albums` (
`id_album` int(4) NOT NULL auto_increment,
`name` tinytext NOT NULL,
`cr_time` datetime NOT NULL default '0000-00-00 00:00:00',
`upd_time` datetime NOT NULL default '0000-00-00 00:00:00',
`show` enum('yes','no') NOT NULL default 'yes',
`id_user` int(10) NOT NULL,
PRIMARY KEY (`id_album`),
KEY `id_user` (`id_user`)
) TYPE=MyISAM;
|
фотографии
CREATE TABLE `photos` (
`id_photo` int(4) NOT NULL auto_increment,
`name` tinytext NOT NULL,
`photo` varchar(50) NOT NULL default '',
`photo_s` varchar(50) NOT NULL default '',
`id_album` int(4) NOT NULL,
`id_user` int(10) NOT NULL,
PRIMARY KEY (`id_photo`),
KEY `id_album` (`id_album`),
KEY `id_user` (`id_user`)
) TYPE=MyISAM;
|
нужно извлечь все данные из таблицы альбомов и проверить есть ли у данного альбома хоть одно фото, если есть - вывести случайное из них.
делаю двумя запросами, извлекая каждый альбом делаю новый запрос к таблице фото, если mysql_num_rows вовращает что-то - вывожу.
вопрос собственно в названии темы...
надеюсь вы меня поняли :) | |
|
|
|
|
|
|
|
|
для: durable
(08.06.2009 в 09:13)
| | Затыкать GROUP_CONCAT'ом любую проблему, это мягко говоря, не комильфо.
Всё же связанных строк в дочерней таблице может быть изрядно, а для GROUP_CONCAT требуется отдельный буфер (по умолчанию довольно короткий)
Вообще же запросы типа "а дай мне чего-то там случайной россыпью" алгоритмизируются тяжело. | |
|
|
|
|
|
|
|
для: Trianon
(08.06.2009 в 10:43)
| | ладно, а если, скажем, 2 связанные таблицы.
чтобы для меня проще, допустим `авторы` и `книги`.
нужно извлечь все данные из таблицы авторов, если у автора есть книги-здесь же вывести их.и все это одним запросом. как это грамотно реализуется? | |
|
|
|
|
|
|
|
|
для: Trianon
(13.06.2009 в 11:08)
| | спасибо | |
|
|
|