Запрос - ы к двум таблицам ( PDO )
1.
AlyOha (14.01.2012 / 01:38)
Нужно достать информацию из двух таблиц.
Таблица 1
contact
в ней 2 ячейки
name | user
в name логины друзей пользователя | в user логин пользователя.
Пример таблицы contact:
name | user
Миша | Я
Степа | Я
Рита | Я
Юля | Я
Я | Миша
и таблица users,
в ней ячейки login, gender
В login логин пользователя | в gender пол пользователя.
Пример таблицы users:
login | gender
Рита | девушка
Степа | парень
Миша | парень
Юля | девушка
Мне нужно из таблицы contact вынести пользователя, моего контакта, одного, случайно, у которого в таблице users ячейка gender = девушка.
Кто напишет рабочий запрос скину денюжку на вебмани (сто рублей) и плюс в анкету.
2.
AlyOha (14.01.2012 / 01:54)
Хм, даже за деньги не окажете помощь?((
3.
ramzes (14.01.2012 / 02:05)
зачем из двух? твой логин и так есть, или "моего контакта" - ересь.
и плохая структура бд.
используй внешние ключи цифровые (к id родительской записи)
4.
Zдешний (14.01.2012 / 02:12)
лишняя трата. составь таблицу contacts
id | name | user | gender
5.
AlyOha (14.01.2012 / 08:06)
Zдешний (14 Января 2012 / 02:12)
лишняя трата. составь таблицу contacts
id | name | user | gender
users = все пользователи
contact = контакты
Если в contact добавить ячейку gender и записывать туда пол пользователя, то
если потом пользователь сменит пол, во всех ячейках менять значение??
Добавлено через 03:13 сек.
ramzes (14 Января 2012 / 02:05)
зачем из двух? твой логин и так есть, или "моего контакта" - ересь.
и плохая структура бд.
используй внешние ключи цифровые (к id родительской записи)
я бы хотел увидеть составленный запрос.)
По мере контактирования новых пользователей туда добавятся новые записи, первый пост, пример, как держится информация в бд.
6.
ZloiKombat (14.01.2012 / 12:04)
$arr = array();
$my_contact = mysql_query("SELECT `name` FROM `contact` WHERE `user`='Я';");
while ($my_contacts = mysql_fetch_assoc($my_contact))
{
$pol = mysql_query("SELECT * FROM `users` WHERE `login`='".$my_contacts['name']."';");
if ($pol['gender'] == 'Девушка')
{
$arr[] = $my_contacts['name'];
}
}
$arr_count = count($arr);
$arr_count -= 1;
$mt = mt_rand(0,$arr_count);
echo $arr[$mt];
7.
An0nimous (14.01.2012 / 12:23)
$c=mysql_query("SELECT * FROM `contact` WHERE `user`=$user");
while($as=mysql_fetch_array($c)){
$gender=mysql_fetch_array(mysql_query("SELECT `users` RAND(1) WHERE `login`='$as[name]' AND `gender`='Девушка'"));
$a=$as['name'];
}
echo $a;
а по хорошему лучше пользоватьзя join`aми
Добавлено через 01:37 сек.
хз мож че и намутил в скул запросе ,давно не пользовался
8.
AlyOha (14.01.2012 / 12:28)
Комбат (14 Января 2012 / 12:04)
$arr = array();
$my_contact = mysql_query("SELECT `name` FROM `contact` WHERE `user`='Я';");
while ($my_contacts = mysql_fetch_assoc($my_contact))
{
$pol = mysql_query("SELECT * FROM `users` WHERE `login`='".$my_contacts['name']."';");
if ($pol['gender'] == 'Девушка')
{
$arr[] = $my_contacts['name'];
}
}
$arr_count = count($arr);
$arr_count -= 1;
$mt = mt_rand(0,$arr_count);
echo $arr[$mt];
сейчас попробую, если удастся сообщу в приват.
9.
An0nimous (14.01.2012 / 12:36)
8.
AlyOha, мой вариант попробуй тоже если ошибки в запросе будут пиши в лс исправлю.
10.
AlyOha (14.01.2012 / 12:43)
9.
An0nimous, по очереди, если комбат не подскажет в чем дело использую твой вариант.. А то обоим платить не вариант..
11.
ZloiKombat (14.01.2012 / 12:44)
$arr = array();
$my_contact = mysql_query("SELECT `name` FROM `contact` WHERE `user`='Я';");
while ($my_contacts = mysql_fetch_assoc($my_contact))
{
$pol = mysql_fetch_assoc(mysql_query("SELECT `gender` FROM `users` WHERE `login`='".$my_contacts['name']."';"));
if ($pol['gender'] == 'Девушка')
{
$arr[] = $my_contacts['name'];
}
}
$arr_count = count($arr);
$arr_count -= 1;
$mt = mt_rand(0,$arr_count);
echo $arr[$mt];
Так точнее, пропустил mysql_fetch_assoc в коде. Щас точно рабочий
12.
AlyOha (14.01.2012 / 13:04)
Пожалуйста запросы в PDO, еще нуждаюсь в помощи..
13.
Саня (14.01.2012 / 16:55)
И я попробую....
<?
$q = DB :: $dbh -> query("SELECT `contacts`.*, `users`.* FROM `contacts` LEFT JOIN `users` ON `contacts`.`name`=`users`.`login` WHERE `users`.`gender` = ? AND `contacts`.`user`=? ORDER BY RAND() LIMIT 1;", array('девушка', 'Я')) -> fetchAll();
print_r($q[0]);
?>
14.
AlyOha (14.01.2012 / 17:07)
13.
sanzstez, не работает((
вероятно работает, но информацию на страницу не выводит((
15.
Саня (14.01.2012 / 17:15)
измени в запросе все слова contacts на contact я на своих таблицах делал с другими названиями
16.
AlyOha (14.01.2012 / 17:25)
15.
sanzstez, да я все изменил)) не помог мне запрос((
17.
An0nimous (14.01.2012 / 17:29)
$c=DB::$dbh->query("SELECT * FROM `contact` WHERE `user`=$user");
while($as=$c->fetch()){
$gender=DB::$dbh->query("SELECT `users` RAND(1) WHERE `login`='$as[name]' AND `gender`='Девушка'") -> fetchAll();
$a=$as['name'];
}
echo $a;
18.
AlyOha (14.01.2012 / 18:04)
An0nimous (14 Января 2012 / 17:29)
$c=DB::$dbh->query("SELECT * FROM `contact` WHERE `user`=$user");
while($as=$c->fetch()){
$gender=DB::$dbh->query("SELECT * FROM `users` RAND(1) WHERE `login`='$as[name]' AND `gender`='Девушка'") -> fetchAll();
$a=$as['name'];
}
echo $a;
не работает(
19.
Саня (14.01.2012 / 18:11)
найми кодера. и дай ему как минимум норм структуру этих таблиц или дамп
20.
AlyOha (14.01.2012 / 18:20)
дамп contact
CREATE TABLE `contact` (
`contact_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`contact_user` varchar(20) NOT NULL,
`contact_name` varchar(20) NOT NULL,
PRIMARY KEY (`contact_id`),
KEY `contact_user` (`contact_user`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- Дамп данных таблицы `contact`
--
INSERT INTO `contact` VALUES
(1, 'Леха', 'Миша'),
(2, 'Леха', 'Степа'),
(3, 'Леха', 'Аня'),
(4, 'Леха', 'Оля')
и т.д.
Добавлено через 06:23 сек.
Дамп users
CREATE TABLE `users` (
`users_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`users_login` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`users_gender` varchar(7) NOT NULL,
PRIMARY KEY (`users_id`),
UNIQUE KEY `users_login` (`users_login`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- Дамп данных таблицы `users`
--
INSERT INTO `users` VALUES
(1, 'Леха', 'парень'),
(2, 'Миша', 'парень'),
(3, 'Степа', 'парень'),
(4, 'Аня', 'девушка'),
(5, 'Оля', 'девушка')
21.
An0nimous (14.01.2012 / 18:27)
20.
AlyOha, а где в таблице users ячейка gender ??упс,незаметил
22.
AlyOha (14.01.2012 / 18:33)
21.
An0nimous, все на месте))
23.
Саня (14.01.2012 / 18:34)
Фейспалм
24.
AlyOha (14.01.2012 / 18:46)
Сделал примерный дамп, что вам не нравится? Мне реально нужна помощь... была!!!
URL:
https://visavi.net/topics/28394