Задавайте вопросы, мы ответим
Вы не зашли.
Доброго времени суток.
Есть задача, но я к сожалению плохо представляю как ее решить
По сути требуется азимут в какую сторону гуглить. Помогите пожалуйста.
Задача:
есть три таблицы: users, gifts, mesages
Пытаюсь понять как вынуть из трех таблиц данные по одному юзеру.
Собственно камень зарыт в месте, где нужно получить все сообщения и все подарки для одного юзера.
Пробовал делать Join разных видов, но вынимается для одного юзера один подарок и одно сообщение.
Хотя возможно я както неверно обрабатываю данняе в PHP.
пробовал так
1:
Отредактированно NaFigator (14.07.2011 15:11:05)
Неактивен
второй пример так до ума и не довел...показал лишь концепцию как пробовал.
Самое интересное как это вообще правильнее то делать? и почему.
Неактивен
Да я смотрю это прям оживленный форум
Неактивен
В первом запросе у вас будут все пары подарок - сообщение. То есть если 3 сообщения и 5 подарков, то будет в итоге 15 строк. Если получаете 1 строку, значит вы только ее и выводите в PHP.
JOIN делает не то, что вы ожидаете. Вы ожидаете такое
Петр подарок1 подарок2 сообщение1 сообщение2
Но такой вывод противоречит конфепту реляционных БД. На самом деле JOIN делает так:
Петр подарок1 сообщение1
Петр подарок1 сообщение2
Петр подарок2 сообщение1
Петр подарок2 сообщение1
JOIN это не пристыковка таблиц, а всевозможные пары A,B, где A - строка из первой таблицы, B - строка из второй таблицы.
Правильно будет одним запросом получить все подарки, а вторым запросом - сообщения. При этом запросы с JOIN такие же, как вы описали, но иначе обработать в PHP.
Неактивен
ага, про Join стало яснее (плюс погуглил и поэкспериментировал).
А что насчет вложенных запросов? Разве нельзя каким то образом в переменную получить массив нужных строк?
Чтото вроде того:
Неактивен
Типа массив в MySQL нет. В переменной может быть только один из встроенных типов.
Можно, однако, сделать конкатенацию необходимых строк.
Неактивен
спасибо за разъяснения. конкатенация тут врядли поможет.
Видимо придется вынимать данные несколькими запросами.
Неактивен
NaFigator, Покажите структуру ваших таблиц и пример результата который хотите получить.
Неактивен