[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Извлечение из 2 таблик
CeHTUJI
Есть таблица с различными действиями и в них указывает ID двух пользователей. А пользователи хранятся в другой таблице. Мне нужно извлечь данные из двух таблиц одновременно. Сначала с одной, потом с другой не получится. А в ходе извлечения каждый раз создавать запросы к таблице с пользователями тоже неправильно. Нужно как-то извлечь всех нужных пользователей 1 запросом
AllesKlar
Давай еще раз.
В стиле:
есть таблица ОДИН, у нее поля такие-то
есть таблица ДВА, у нее поля такие-то
Общее поле у таблиц такое-то.

Нужно составить запрос, чтобы на выходе были ТАКИЕ-ТО поля


_____________
[продано копирайтерам]
Kusss
делаешь запрос в 2 таблицы сразу
в условии WHERE пишешь связь таблиц.
SELECT 
t1.*, t2.name
FROM
table1 t1,
table2 t2
WHERE
t1.user_id = t2.id
sergeiss
Есть UNION, есть JOIN, есть другие средства. Нужно знать структуру таблиц, чтобы что-то советовать, потому что в разных случаях разные средства используются.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Kusss
sergeiss
Согласен. Я привел самый простой пример.
CeHTUJI
Есть таблица с действиями:
ID
Имя действия
Пользователь 1
Пользователь 2

Таблица с пользователями
ID
Имя
Аватар

нужно достать последние 20 действий и аватарки с именами подгрузить с таблицы с пользователями
Kusss
на мой взгляд будет логичнее сделать 2 запросами.
В первом все пользователи, собрать массив в котором ключ - id значения имена и аватары
а во втором действия и подставлять данные из массива с пользователями.

НО раз хочется одним запросом
SELECT
a.name,
u1.name AS user_name1, u1.avatar AS avatar1,
u2.name AS user_name2, u2.avatar AS avatar2
FROM
`action_user` AS a,
`user` AS u1,
`user` AS u2
WHERE
u1.id = a.user_id1 AND
u2.id = a.user_id2
ORDER BY
a.id DESC
LIMIT

0,20
Valick
Цитата
на мой взгляд будет логичнее сделать 2 запросами.
В первом все пользователи, собрать массив в котором ключ - id значения имена и аватары
а во втором действия и подставлять данные из массива с пользователями.

никогда такого больше не говорите, запросы в цикле (даже если их всего 20) это плохо

и используйте JOIN ON в запросах с соединением таблиц

_____________
Стимулятор ~yoomoney - 41001303250491
Kusss
О каких запросах в цикле ты говоришь ? Я такого не предлагаю smile.gif
Dno
Здравствуйте.

Есть таблица Публикаций на сайте. publications
Поля
id
title
description
img
keywords
date
author
authorid
popular


Есть таблица комментариев comments, в котором есть поле, pubid, которое говорит к какой публикации принадлежит комментарий.

Вытаскиваю публикации таким способом:
// Вывод популярных статей
function PopularPublications($popular){
global $db;
$sql = "SELECT * FROM publication WHERE popular = '$popular' ORDER BY id DESC";
$res = mysqli_query($db, $sql);
while($row = mysqli_fetch_assoc($res))
$publication[] = $row;
return $publication;
}


И получаю массив:
[publication] => Array
(
[id] => 1
[title] => заголовок
[description] => описание
[img] => путь до картинки
[keywords] => ключевые, слова
[date] => 01 Ноя 14
[author] => Dno
[authorid] => 1
[popular] => 1
)

А как узнать сколько комментариев к данной статье? Как правильно отправить запрос? Эххх... Замучался, подскажите ДОБРЫЕ ЛЮДИ. :unsure:
Kusss
$sql = "SELECT * FROM `user`";
$sql = mysql_query($sql);
while ($value = mysql_fetch_assoc($sql)){
$array_user[$value['id']] = array(
'name'=> $value['name'],
'avatar'=> $value['avatar'],
);

}

$sql = "SELECT * FROM `action_user`";
$sql = mysql_query($sql);
while ($value = mysql_fetch_assoc($sql)){
echo '<br>User1: Имя:'.$array_user[ $value['user_id1'] ]['name'].' Аватар: '.$array_user[ $value['user_id1'] ]['avatar'];
}
AllesKlar
Dno
Ты зачем в чужую тему залез? mad.gif
Тебе в твоей уже ответили.

_____________
[продано копирайтерам]
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.