parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Выборка из базы данных

Mizter Egoist 02.04.2015 09:43

Добрый день!
Интересует вопрос как правильно сделать выборку из базы данных.
Вот код:
$questions[ #Получаем все треды
	^connect[$connect_string]{
		^table::sql{
			SELECT	id,
				sectionID,
				threadID,
				parentID,
				uID,
				date,
				mess,
				closed
			FROM	questions
			WHERE	sectionID = '$advices.section.id'
			AND	parentID = '0'
		}
	}
]
^if(def $questions){
	^if(def $form:url && $form:url eq $advices.section.section_url && $questions && !def $form:q){
		<h2>Действующие консультации</h2>
		^rem{####	START OPERATOR	####}
		^questions.menu{
			^connect[$connect_string]{
				$operator[ #Получаем все сообщения текущего оператора в данном раздел
					^table::sql{
						SELECT	id,
							sectionID,
							threadID,
							parentID,
							uID,
							date,
							mess,
							closed
						FROM	questions
						WHERE 	uID = '$initialization.auth.uID'
						AND	threadID = '$questions.threadID'
						LIMIT	1
					}
				]
				^operator.menu{
					$Q[ #Фильтруем и показываем только треды
						^table::sql{
							SELECT	id,
								sectionID,
								threadID,
								parentID,
								uID,
								date,
								mess,
								closed
							FROM	questions
							WHERE 	parentID = '0'
							AND	threadID = '$operator.threadID'
						}
					]
					$U[ #Показываем пользователей, которые начали теды
						^table::sql{
							SELECT	uID,
								gID,
								sID,
								login,
								email,
								forename,
								surname
							FROM	users
							WHERE 	uID = '$Q.uID'
						}
					]
					
					^U.menu{$U.forename $U.surname}
					^Q.menu{<a href="/${form:url}?q=${Q.threadID}">$Q.mess</a><br>}
				}
			}
		}
		^rem{####	END OPERATOR	####}
		<h2>New</h2>
		^rem{####	START FREE	####}
		^questions.menu{
			^connect[$connect_string]{
				$operators[ #Получаем всех операторов
					^table::sql{
						SELECT	uID,
							gID,
							sID,
							login,
							email,
							forename,
							surname
						FROM	users
						WHERE 	gID = '3'
					}
				]
				^operators.menu{
					$close[ #Ищем все сообщения всех операторов в текущем разделе
						^table::sql{
							SELECT	id,
								sectionID,
								threadID,
								parentID,
								uID,
								date,
								mess,
								closed
							FROM	questions
							WHERE 	uID = '$operators.uID'
							AND	threadID = '$questions.threadID'
							LIMIT	1
						}
					]
				}
				^close.menu{
					$free[ #Пытаемся исключить треды в которых участвовал оператори оставить пустые, без участия оператора, увы не плучатся
						^table::sql{
							SELECT	id,
								sectionID,
								threadID,
								parentID,
								uID,
								date,
								mess,
								closed
							FROM	questions
							WHERE 	sectionID = '$advices.section.id'
							AND	threadID != '$close.threadID'
							AND	parentID = '0'
						}
					]
				}
			}
			^free.menu{$free.threadID<br>}
		}
		^rem{####	END FREE	####}
	}
}
Проблема во $free.
Не получается отфильтровать треды.
Механизм работы задуман так:
Пользователь заходит в раздел, начинает тред, оператор на своей странице видит треды в которых он участвовал, другие операторы их не видят. Для всех операторов предусмотрен список новых тредов, в которых еще не участвовал ни один из операторов, так вот проблема в получении этого списка, Я смог получить треды в которых участвовали операторы, но исключить их из общего списка не получается.
Прошу у вас помощи.