Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: вывод всех записей в сцепленных таблицах
 
 автор: larush   (20.08.2008 в 19:27)   письмо автору
 
 

привет всем !
помогите - делаю форум, блог или что-то в этом роде

tabl1- темы блога
(1, тема для Коли)
(2,тема для Оли)
(3,тема для всех)
(4,тема ни для кого)

tabl2 - персональный доступ (первая колонка -id из первой таблицы(номер темы) , вторая колонка- имя пользователя, которому разрешено читать эту тему (в боевом варианте будет id пользователя, так написал чтобы облегчить понимание связей))
(2,ОЛЯ)
(1,КОЛЯ)

tabl3 публичный доступ (номера тем из первой таблицы для публичного доступа
(3)

в результате запроса должны быть все 4 строки, но в завсисимости от имени юзера должно быть отличие "предназначенных" для него строк (в колонке стоять к примеру его имя, 1 или еще чтонить) исходя из чего я буду создавать линки на этих строках

зашел КОЛЯ ($_SESSION['user_name']='КОЛЯ')
1, тема для Коли,КОЛЯ
2,тема для Оли,
3,тема для всех,КОЛЯ
4,тема ни для кого

зашла ОЛЯ
1, тема для Коли,
2,тема для Оли,ОЛЯ
3,тема для всех,ОЛЯ
4,тема ни для кого

не слишком путанно объяснил ? Спасибо всем !

  Ответить  
 
 автор: Trianon   (20.08.2008 в 20:20)   письмо автору
 
   для: larush   (20.08.2008 в 19:27)
 

themes(id_theme, theme_name, public)
access(theme_id, user_id)

SELECT themes.*, COALESCE(access.user_id, public-1,  -1) AS acsid
  FROM themes 
    LEFT JOIN access ON themes.id_theme = access.theme_id 
                        AND access.user_id = $login_id

Третья таблица намеренно минимизирована до поля public в первой, поскольку таболица с одним полем - нонсенс. Таблица описывать сущность. А факт открытого для всех доступа - свойство.
Если персонального доступа к таблице нет, но есть публичный, на выходе 0, если нет никакого, то -1 .
подставить вместо нуля $login_id в нужном месте - задача php-уровня . По-моему так более логично.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования