Руслан И.
73 сообщения
#14 лет назад
Имеется две таблицы

1 таблица вопросов от пользователя другому пользователю
`id_q` int(11) NOT NULL AUTO_INCREMENT,
`from` varchar(40) NOT NULL,
`to` varchar(40) NOT NULL,
`vopros` varchar(255) NOT NULL,
`anonim` enum('0','1' NOT NULL,
`answed` enum('0','1' NOT NULL,
`timestamp` int(10) NOT NULL,
2 таблица ответов на вопросы

`id_ans` int(11) NOT NULL AUTO_INCREMENT,
`id_q_fk` int(11) NOT NULL,
`who_ans` varchar(40) NOT NULL,
`ans_text` text NOT NULL,
`timestamp` int(11) NOT NULL,


Нужно вывести список вопросов с ответами на них, в этом проблемы нет.. Но нужно вывести сразу инфо по обоим пользователям из базы, кто задал вопрос и кто ответил..
Аналог - сайт formspring.me

Вот мой запрос:
SELECT a.ans_text, a.timestamp, q.from, q.vopros, q.anonim, f.img FROM ТАБЛИЦА_ВОПРОСОВ as q, ТАБЛИЦА_ОТВЕТОВ as a, ТАБЛИЦА_АВАТАРКИ_ЮЗЕРА as f
WHERE ((q.id_q = a.id_q_fk) AND (a.who_ans = 'юзер чьи ответы смотрим' AND (q.from = f.username))

но получается у меня извлеч инфо только одного юзера либо чей вопрос либо чей ответ..

С джоинами не дружу, может с помощью него как то можно?
Кирилл Е.
2817 сообщений
#14 лет назад
Частенько у вас проблемы с SQL, тем кто помогает решать такие задачки на форуме - дарите символических 5 вмз? Это же, наверное, с проекта, за который, я так понимаю, вам платят, было бы справедливо делится с помощниками .. Но если это нужно для бесприбыльного проекта - всё равно, нужно как-то поощрять людей, потративших своё время

Я не любопытный, просто интересно

Да и не серьезно как-то, есть же куча литературы и информации по sql, покопав в которой, можно извлечь решение для своей задачи.

Я не злой, просто даю бесплатный совет - всегда на форумах помогать не будут, нужно учится искать и учится самостоятельно, сорри за тавтологию
Руслан И.
73 сообщения
#14 лет назад
Учусь же я))) но иногда голову не хочется ломать можно и спросить у людей знающих, на счет проекта, проект свой, социалка))
Владислав М.
102 сообщения
#14 лет назад
Лучше используй два три простых запроса, вместо одного сложного.

SELECT DISTINCT q.*, a.*, u1.*, u2.*
FROM questions_table AS q
LEFT JOIN answers_table AS a ON q.id_q = a.id_q_fk
LEFT JOIN users_table AS u1 ON q.from = u1.id
LEFT JOIN users_table AS u2 ON q.to = u2.id
LIMIT 100
Цитата ("speedi"):
с джоинами не дружу

Зря. Обрати внимание на последние два джоина, используется одна и та-же таблица с разными именами
Руслан И.
73 сообщения
#14 лет назад
Вот это дааа.. спасибо)) Надо будет подружиться, только дистинкт в этом случае зачем? дубликатов вроде быть не должно и без нее работает, и она я читал много ресурсов жрет.
Руслан И.
73 сообщения
#14 лет назад
Неет, че-то не то получается у меня. Что попало выводится. Ладно, попробую разобраться.