Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 30.11.2012
Сообщений: 43
1

Сопостовление данных из двух таблиц

27.02.2014, 23:21. Показов 616. Ответов 10
Метки нет (Все метки)

Здравствуйте.
Имеются 2 таблицы.

Adapter
С полями:
  • Provider
  • Enable
Где enable это INT, 0 - выключено, 1 - включено, Provider - имя провайдера.

Вторая таблица:
User
  • Provider
  • Attach
Где Provider - имя провайдера, attach INT, 0 - выключено, 1 - включено.

Связь между таблицами через имя провайдера, что в двух таблицах выражено в полях Provider.
Теперь больше конкретики, в таблице Adapter хранятся данные от соц. сетей, для авторизации пользователей, во второй таблице хранятся данные, через какой провайдер человек был авторизован, attach служит для дальнейшего закрепления аккаунта за пользователем, чтобы можно было входить без ввода данных сайта, а напрямую через провайдер.

Что нужно:
Построить список (тот, что представлен ниже) со всеми провайдерами, что есть в таблице Adapter.

Имя провайдера - Ссылка (Подключить аккаунт (если attach = 0) ИЛИ отключить аккаунт (если attach = 1)).
Как можно это сделать? Довольно долго ломал голову, но логику так и не продумал.
Спасибо.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.02.2014, 23:21
Ответы с готовыми решениями:

Суммирование данных из двух таблиц таблиц
И так сумма складывается и выводится значение итого, так происходит для двух таблиц. теперь нужно...

Выборка данных из двух таблиц
День добрый. Есть две таблицы(рисунок). Где Table2 - таблица со всеми пользователями. Итак. Я...

Вывод данных из двух таблиц
Добрый день. Я совсем недавно начал изучать php и столкнулся с такой проблемой. У есть меню с...

Вывод данных из двух таблиц
Задача такая Первый запрос считает данные в таблице, а второй выводит список категории. Мне надо...

10
24 / 23 / 6
Регистрация: 19.02.2014
Сообщений: 114
28.02.2014, 22:56 2
Цитата Сообщение от osdohtem Посмотреть сообщение
enable это INT
Цитата Сообщение от osdohtem Посмотреть сообщение
attach INT
Тут лучше взять bool или bit, оба двоичные.
Цитата Сообщение от osdohtem Посмотреть сообщение
Как можно это сделать? Довольно долго ломал голову
все это очень легко делается, сделаю шаблон, то, что нужно, сам вставишь
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
//подключение к бд $sql=mysqli_connect...
$q = "SELECT * FROM user";
$i = 0;
if ($result = $sql->query($q)) {
while ($row[$i] = $result->fetch_assoc()) {
$i++;
}
};
for ($i = 0, $k=count($row); $i<$k; $i++)
echo "<ul>";
if ($row[$i]['attach'] == true) {
$qw = "INSERT INTO user (attach) VALUES ('!$row[$i]['attach']')"
echo "<li>".$row[$i]['Provider']." - подключено";
echo "<form method=\"post\">";
echo "<input name=\"off\" type=\"submit\" value=\"отключить\">";
if(isset($_POST['off'])) {
$resoff = $sql->query($qw);
}
}
else {
echo "<li>".$row[$i]['Provider']." - отключено";
}
echo "</ul>";
 
?>
дальше сам разберешься... Насчет связи, что именно тебе нужно сделать, чтобы поля "provider" синхронизировались? или чтобы при добавлении новой записи в обе таблицы данные добавлялись?
0
0 / 0 / 0
Регистрация: 30.11.2012
Сообщений: 43
01.03.2014, 06:51  [ТС] 3
Pashkanin, спасибо, но это не то.
Небольшой ап, пересмотрел структуру таблиц, в итоге теперь убрал поле attach за ненадобностью, теперь если в таблице user есть совпадение по полю Provider, то уже подключено.

То-есть: таблица Provider это список всех провайдеров, а таблица User, это те провайдеры, к которым подключён юзер.
Есть в таблице User нету записи с именем провайдера, значит он не подключён.
На данный момент я реализовал это 2 запросами.
Первым запросом запрашиваем список всех провайдером и потом самое ужасное, в цикле делаем запрос к таблице User и проверяем, есть ли совпадения по полям.
0
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
01.03.2014, 10:38 4
в чем вопрос-то? как получить список провайдеров для которых нет юзеров?
0
0 / 0 / 0
Регистрация: 30.11.2012
Сообщений: 43
01.03.2014, 14:00  [ТС] 5
ads, нет, вывести весь список провайдеров и к каким из них подключён пользователь, в таблице User есть поле userid.

Добавлено через 6 минут
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$adapter = mysql_query("
    SELECT provider
    FROM socialauth_adapter
    WHERE active = '1'
    ORDER BY provider DESC
");
while ($provider = mysql_fetch_array($adapter))
{
    $check = mysql_query("SELECT * FROM socialauth_user WHERE userid = '" . $userid . "' AND provider = '" . $provider['provider'] . "'");
    if ($check)
    {
        print 'This provider enable';
    } else {
        print  'This provider disable';
    }
}
Собственно так сейчас код выглядит, но ужасно то, что в приходится делать ещё один запрос в цикле для проверки.
0
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
01.03.2014, 14:08 6
Цитата Сообщение от osdohtem Посмотреть сообщение
вывести весь список провайдеров и к каким из них подключён пользователь, в таблице User есть поле userid.
кто нибудь что нибудь понял?
покажите две эти таблицы... sql их создания чтоли...

Добавлено через 5 минут
PHP
1
2
3
4
5
"SELECT * FROM socialauth_user WHERE userid = '" . $userid . "' AND provider in 
(SELECT provider
    FROM socialauth_adapter
    WHERE active = '1'
    ORDER BY provider DESC)"
0
0 / 0 / 0
Регистрация: 30.11.2012
Сообщений: 43
01.03.2014, 14:26  [ТС] 7
SQL
1
2
3
4
5
6
CREATE TABLE IF NOT EXISTS `adapter` (
    `provider` text NOT NULL,
    `active` INT(1) NOT NULL DEFAULT '0') 
CREATE TABLE IF NOT EXISTS `user` (
    `userid` INT(25) NOT NULL,
    `provider` text NOT NULL)
2 таблицы, есть список провайдеров, в таблице adapter, это список всех доступных провайдеров.
В таблице user хранятся данные, к какому провайдеру человек подключён.
Я хочу вывести весь список провайдеров и напротив ссылку, к какому провайдеру человек подключён, выводить enable, а ко всем остальным disable.
0
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
01.03.2014, 14:36 8
SQL
1
2
3
SELECT USER.userid,USER.provider,adapter.active 
FROM USER INNER JOIN adapter 
ON USER.provider=adapter.provider;
Добавлено через 2 минуты

Не по теме:

какого-тохрена местный sql тег переводит user в верхний регистр

0
24 / 23 / 6
Регистрация: 19.02.2014
Сообщений: 114
01.03.2014, 17:09 9
Цитата Сообщение от osdohtem Посмотреть сообщение
CREATE TABLE IF NOT EXISTS `user` (
* * `userid` INT(25) NOT NULL,
* * `provider` text NOT NULL)
тогда уж
SQL
1
2
3
4
5
6
CREATE TABLE IF NOT EXISTS `user` (
`userid`  INT NOT NULL AUTO_INCREMENT/*автозаполнение*/ ,
`provider`  VARCHAR(255) NULL ,
PRIMARY KEY (`userid`) /*уникальное значение поля*/
)
;
0
0 / 0 / 0
Регистрация: 30.11.2012
Сообщений: 43
01.03.2014, 18:05  [ТС] 10
Pashkanin, там просто записывается id уже имеющегося пользователя, сама таблица пользователей движка называется иначе.

Добавлено через 7 минут
ads, я такой-же запрос уже в самом начале написал, но он просто выводит совпадения, при этом не выводя провайдеров, по которым совпадений нет.
0
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
01.03.2014, 18:35 11
Цитата Сообщение от osdohtem Посмотреть сообщение
я такой-же запрос уже в самом начале написал, но он просто выводит совпадения, при этом не выводя провайдеров, по которым совпадений нет
Цитата Сообщение от ads Посмотреть сообщение
получить список провайдеров для которых нет юзеров?
дежавю...
попытка номер последняя, вывод ВСЕХ провайдеров даже для которых нет юзеров:
select user.userid,adapter.provider,adapter.active from adapter left join user on user.provider=adapter.provider;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.03.2014, 18:35

Вывод данных с двух таблиц
Есть 2 таблицы users и reports. Нужно вывести 1 столбец из таблицы reports вошедшего юзера, который...

Вывод данных из двух таблиц
подскажите что не так &lt;header&gt; &lt;title&gt; заголовок&lt;/title&gt; &lt;/header&gt; &lt;body bgcolor=&quot;red&quot;...

Вывод данных из двух таблиц
Здравствуйте укажите пожалуйста на мои ошибки. Имеется 2 таблицы: 1) luck_server (в ней...

Вывод данных из двух таблиц
Всем привет! Есть 2 таблицы в БД: files_post id|name|url|date 1 | Постановление_1 |...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru