Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Ответ с одной строкой


Автор: Zakir_Kadiri 22.9.2007, 12:29
Код

user_table
id    qid    uid
61    4    18
60    4    12
64    4    23


vote_table
id    question
2    weqwe
3    New vote
4    qqqqqq


Ответ запроса
id    question    sef    type    sef    uid
4    qqqqqq    asdasd    radio    asdasd    18
4    qqqqqq    asdasd    radio    asdasd    12
4    qqqqqq    asdasd    radio    asdasd    23


И мой запрос...
Код

SELECT v.id, v.question, u.uid FROM vote_table v LEFT JOIN user_table u ON v.id=u.qid WHERE status='active' AND qid='4' GROUP BY u.uid ORDER BY id DESC


Хочу что вроде такого ответа
Код

id    question    sef    type    sef    uid
4    qqqqqq    asdasd    radio    asdasd    (18, 12, 23)


Автор: sTa1kEr 22.9.2007, 13:02
Код

SELECT v.id, v.question, CONCAT('(', GROUP_CONCAT(u.uid SEPARATOR ', '), ')') AS uid 
FROM vote_table v
LEFT JOIN user_table u ON v.id=u.qid 
WHERE status='active' AND u.qid='4' 
GROUP BY v.id, v.question
ORDER BY v.id DESC

Автор: Zakir_Kadiri 22.9.2007, 14:11
 smile  smile Большое спасибо вычучил от лишних запросов

Автор: Zakir_Kadiri 22.9.2007, 14:27
А это не нагружает сервер? Хочу сказать что по вашему этот запрос лучше чем делат запрос дважды?
Если не трудно подробно опишите или дайте ссылку

Автор: Zakir_Kadiri 22.9.2007, 15:37
Код

SELECT * FROM table1 WHERE tid=23

table1

id    tid    lang    ref_field    value
1    23    1    title        sometitle
2    23    1    short        someshort
3    23    1    full        somefull 



А можна ли...
Код

id    tid    lang    title            short            full
1    23    1    sometitle    someshort    somefull 


Автор: ewolf 23.9.2007, 00:20
Можно конечно так

Код

SELECT t1.id, t1.tid, t1.lang, t1.value AS title, t2.value AS short, t3.value AS full

FROM table AS t1, table AS t2, table AS t3

WHERE
t1.ref_field = 'title'
AND
t2.tid = t1.tid AND t2.lang=t1.lang AND t2.ref_field = 'short'
AND
t3.tid = t1.tid AND t3.lang=t1.lang AND t3.ref_field = 'full'


но по-моему у тебя структура таблицы неправильная

Автор: Zakir_Kadiri 23.9.2007, 09:11
Цитата(ewolf @  23.9.2007,  02:20 Найти цитируемый пост)
но по-моему у тебя структура таблицы неправильная 

Эту базу не я создал, а кто то другой тепер мне говорят что я дольжен починит сайт и добавит некоторые функциональности. Ну и потому я даю такие "нехорошие вопросы"

...Зы и спасибо за запрос. Вы мне очен помогли. Может я тоже могу чем то помоч вам? Если да, напишите мне ПМ

Автор: SelenIT 23.9.2007, 20:51
Имхо, структура как раз хорошая, для отношения N:1 самое то что надо. Но джойнить таблицу саму на себя n раз только ради представления выборки в одну строку - имхо, нерационально. От скрипта не убудет, если получать данные простым запросом "в столбик" и строить нужный массив характеристик циклом - а базе с простыми запросами все-таки полегче...

Автор: Zakir_Kadiri 25.9.2007, 08:55
Благодарен всем. Задача пыполнено smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)