Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.12.2015, 16:56   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,893
Вопрос Получить данные из двух таблиц

Доброго времени суток!
Есть две таблицы
PHP код:
CREATE TABLE `test1` (
  `
uidint(10unsigned NOT NULL auto_increment,
  `
namevarchar(20NOT NULL,
  
PRIMARY KEY  (`uid`)
ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=
PHP код:
CREATE TABLE `test2` (
  `
uidint(10unsigned NOT NULL auto_increment,
  `
flagsvarchar(20NOT NULL,
  
PRIMARY KEY  (`uid`)
ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=
Из таблиц беру всё
Вывожу:
PHP код:
$query "SELECT * FROM test1, test2 WHERE test1.uid = '".mysql_real_escape_string($_GET['usrid'])."'";
$result mysql_query($query) or die ("ERROR: ".mysql_error());
$row mysql_fetch_array($result);
    echo 
$row['name'].'~'.$row['flags']; // Выводим данные 
В таблице есть четыре пользователя и у всех поголовно выводится флаг z, на деле у ID 1 должен быть флаг z, у ID 2 флаг a.
Где-то допустил ошибку, но не пойму где.

Кросспостить то зачем? Не первый год на форуме
Модератор

Последний раз редактировалось Shouldercannon; 30.12.2015 в 22:25.
Shouldercannon вне форума Ответить с цитированием
Старый 30.12.2015, 17:03   #2
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

У вас данные в таблицах никак не связаны между собой, никак не сделать то что вам надо
Надо сначало структуру править.
come-on вне форума Ответить с цитированием
Старый 31.12.2015, 10:53   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,893
По умолчанию

Пока вижу такое решение
PHP код:
$query "SELECT `name` FROM `test1` WHERE `uid` = '".mysql_real_escape_string($_GET['usrid'])."'";
$result mysql_query($query) or die ("ERROR: ".mysql_error());
$row mysql_fetch_array($result);

$query "SELECT `flags` FROM `test2` WHERE `uid` = '".mysql_real_escape_string($_GET['usrid'])."'";
$result mysql_query($query) or die ("ERROR: ".mysql_error());
$admin_flags mysql_fetch_array($result);

echo 
$row['name'].'~'.$admin_flags['flags']; // Выводим данные 
Shouldercannon вне форума Ответить с цитированием
Старый 31.12.2015, 11:00   #4
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

что уперлись в пхп? вам же сказал что вопрос не в пхп, он тут не при чем совершенно
у вас:
Код:
`uid` int(10) unsigned NOT NULL auto_increment
в обоих таблицах, это означает что
Цитата:
данные в таблицах никак не связаны между собой
если у вас в таблице флогов находится информация по флагам у людей то auto_increment в флагах надо выбросить, потом дать если надо форейгн кий для связи и поддержания целостности данных.
потом уже написать простой запрос
Код:
select * from t1
[left/inner] join t2 on ..
[where ...]
come-on вне форума Ответить с цитированием
Старый 31.12.2015, 13:08   #5
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,893
По умолчанию

В обеих таблица UID - это ID пользователя в чате. В обеих таблицах он должен быть одинаковыq для получения данных интересующего пользователя. В таблице пользователей UID присваивается по мере пополнения таблицы, а в админах я сам присваиваю UID
Shouldercannon вне форума Ответить с цитированием
Старый 31.12.2015, 13:22   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Код:
SELECT test1.uid,test1.name,test2.flags
  FROM test1 LEFT JOIN test2 ON test2.uid=test1.uid
  WHERE test1.uid = чего-то
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.10.2017, 20:52   #7
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,893
По умолчанию

Столкнулся с проблемой получения сразу двух значений из другой таблицы. Вот реализация для одного значения (`tusr`.`nick` AS `from`). Помогите, пожалуйста, задействовать второе значение (`tusr`.`nick` AS `executor`)
Код:
<?php
include "utils.php";

$query = "SELECT `treq`.`uid`, `tusr`.`nick` AS `from`, `tusr`.`nick` AS `executor`
       	 FROM `requests` AS `treq`
         LEFT JOIN `users` AS `tusr` ON `tusr`.`uid` = `treq`.`from`";	 
$result = mysql_query($query) or die ("ERROR: ".mysql_error());
if (mysql_num_rows($result) > 0) {
	while ($row = mysql_fetch_array($result)) {
		echo $row['uid'].'~'.$row['from'].'~'.$row['executor'];
	}
}
?>
Shouldercannon вне форума Ответить с цитированием
Старый 02.10.2017, 21:29   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
[sql]`tusr`.`nick` AS `from`, `tusr`.`nick` AS `executor`[/sql]
Вы зачем хотите два раза вывести ОДНО И ТО ЖЕ ПОЛЕ?
От того, что Вы ему разные псевдонимы назначаете, оно другим не становится - у Вас в выборке поля `from` и `executor` всегда будут одинаковы.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.10.2017, 22:15   #9
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,893
По умолчанию

Засада. from=7, executor=1. Оба ID есть в таблице users. Тут совсем без вариантов?
Shouldercannon вне форума Ответить с цитированием
Старый 02.10.2017, 22:23   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
Засада. from=7, executor=1.
откуда Вы взяли что from равен 7, а executor равен 1 ?
Это в какой-то таблице есть такая запись?
может быть, Вы покажите, что есть в таблице(-ах) и что Вы хотите получить?
или продолжим в угадайку играть?
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывести данные из двух таблиц Shouldercannon PHP 30 31.10.2013 04:38
Данные из двух таблиц в одну reihtmonbern БД в Delphi 1 15.01.2013 23:25
Отличающиеся данные из двух таблиц Ma4balaka SQL, базы данных 12 09.11.2010 16:58
Связать данные двух таблиц ZhK Microsoft Office Excel 5 03.09.2009 12:23