Скажите как можно объединить 2 таких вот запроса в один ?
$myrow = mysql_query("SELECT * FROM `users` WHERE `usname` = '".$visitor."'");
$user = mysql_fetch_assoc($myrow);
$card = mysql_query("SELECT * FROM `cards` WHERE `name` = '".$user['name']."' and status = '1'");
$cards = mysql_fetch_assoc($card);
ЗЫ: Пробовал объединять но когда в таблице cards нет записей по определенному пользователю то информация по нему не извлекаеться из таблицы пользователей!
Возможно ли их объединить чтоб работало ?
Спустя 6 минут, 25 секунд (10.02.2011 - 10:20) nugle написал(а):
как то так!
$myrow = mysql_query("SELECT * FROM `users` WHERE `usname` = '".$visitor."' UNION ALL
SELECT * FROM `cards` WHERE `name` = '".$user['name']."' and status = '1'");
$user = mysql_fetch_assoc($myrow)
Спустя 5 минут, 33 секунды (10.02.2011 - 10:25) blade написал(а):
А как быть с одинаковыми названиями полей в таблицах ?
Спустя 2 минуты, 34 секунды (10.02.2011 - 10:28) nugle написал(а):
гугл почитайте, это такая интересная штука!Я просто не мастер в объединении запросов!
Спустя 1 минута, 52 секунды (10.02.2011 - 10:30) blade написал(а):
Читал но так и не нашёл =(
Спустя 4 минуты, 12 секунд (10.02.2011 - 10:34) nugle написал(а):
попробуй как то так доставать $user[0]['поле'] и $user[1]['тоже поле'] (это я чисто из соображений о массивах)
Спустя 1 минута, 20 секунд (10.02.2011 - 10:35) blade написал(а):
При выполнении запроса выдает ошибку
Parse error: syntax error, unexpected T_IF in C:\Program Files\VertrigoServ\www\test\index.php on line 25
Parse error: syntax error, unexpected T_IF in C:\Program Files\VertrigoServ\www\test\index.php on line 25
Спустя 1 минута, 44 секунды (10.02.2011 - 10:37) Michael написал(а):
SELECT u.*, c.*
FROM `users` u, `cards` c
WHERE u.usname = $name
AND u.usname = c.name
AND c.status = 1
Спустя 4 минуты (10.02.2011 - 10:41) blade написал(а):
Цитата (Michael @ 10.02.2011 - 07:37) |
SELECT u.*, c.* |
При таком выборе в случает отсутствия записей в таблице cards данные из таблицы users не извлекаються
Спустя 11 минут, 58 секунд (10.02.2011 - 10:53) Michael написал(а):
Если нужно по всем пользователям пройтись с учетом отсутствия, то LEFT JOIN используется:
пробуй в phpmyadmin на данных и смотри какую выборку возвращает, ты же сюда даже структуры таблиц не выложил, пойди догадайся чего надо.
SELECT u.*, c.*
FROM `users` u LEFT JOIN `cards` c
ON u.name = c.name
AND ...
пробуй в phpmyadmin на данных и смотри какую выборку возвращает, ты же сюда даже структуры таблиц не выложил, пойди догадайся чего надо.
Спустя 42 минуты, 31 секунда (10.02.2011 - 11:36) blade написал(а):
нужно выбрать все данные из 1 таблицы а из другой только данные по определенному пользователю
Спустя 3 минуты, 33 секунды (10.02.2011 - 11:39) Snus написал(а):
blade
Если покажешь какие столбцы тебе нужно выбрать - напишу полный запрос
SELECT *
FROM `users` AS dbu
LEFT JOIN `cards` AS dbc ON dbc.name = dbu.name
Если покажешь какие столбцы тебе нужно выбрать - напишу полный запрос
Спустя 58 секунд (10.02.2011 - 11:40) Snus написал(а):
А вообще Michael тебе уже дал правильный ответ. В чем проблема-то?
Спустя 11 минут, 22 секунды (10.02.2011 - 11:52) blade написал(а):
Проблема вся в том что если в таблице users есть записи но в таблице cards их нет то данные по пользователям не выбираються а выбираються только тогда когда есть записи в cards
Спустя 2 минуты, 20 секунд (10.02.2011 - 11:54) Snus написал(а):
blade
SELECT *
FROM `users` AS dbu
INNER JOIN `cards` AS dbc ON dbc.name = dbu.name
Спустя 2 минуты, 16 секунд (10.02.2011 - 11:56) blade написал(а):
Подставил но ошибка таже и мне нужно из таблицы cards выбрать dbc.name = dbu.usname но это условие неизвестное т.к мне из таблицы users нужно выбрать определенного пользователя !
$myrow = mysql_query("SELECT *
FROM `users` AS dbu
LEFT JOIN `cards` AS dbc ON dbc.name = dbu.usname");
$user = mysql_fetch_assoc($myrow)
Спустя 4 минуты, 13 секунд (10.02.2011 - 12:00) Snus написал(а):
blade
SELECT *
FROM `users` AS dbu
INNER JOIN `cards` AS dbc ON dbc.name = dbu.usname
WHERE dbu.usname = 'mister_dick'
Спустя 9 минут, 41 секунда (10.02.2011 - 12:10) blade написал(а):
Ошибка остается
Parse error: syntax error, unexpected T_IF in C:\Program Files\VertrigoServ\www\test\index.php on line 25
Возможно что она из-за того что в БД users 15 полей а в cards 7 ?
Parse error: syntax error, unexpected T_IF in C:\Program Files\VertrigoServ\www\test\index.php on line 25
Возможно что она из-за того что в БД users 15 полей а в cards 7 ?
Спустя 4 минуты (10.02.2011 - 12:14) Snus написал(а):
blade
Покажи свой запрос как ты сделал
Покажи свой запрос как ты сделал
Спустя 1 минута, 27 секунд (10.02.2011 - 12:15) blade написал(а):
$visit = "admin";
$myrow = mysql_query("SELECT * FROM `users` AS dbu LEFT JOIN `cards` AS dbc ON dbc.name = dbu.usname WHERE dbu.usname = '".$visit."'");
$user = mysql_fetch_assoc($myrow)
$myrow = mysql_query("SELECT * FROM `users` AS dbu LEFT JOIN `cards` AS dbc ON dbc.name = dbu.usname WHERE dbu.usname = '".$visit."'");
$user = mysql_fetch_assoc($myrow)
Спустя 1 минута, 12 секунд (10.02.2011 - 12:17) blade написал(а):
Вот структуры таблиц. Добрался наконец до них
--
-- Структура таблицы `cards`
--
CREATE TABLE IF NOT EXISTS `cards` (
`id` int(11) NOT NULL auto_increment,
`start` int(11) NOT NULL,
`plan` int(11) NOT NULL,
`name` varchar(40) NOT NULL,
`kto` varchar(40) NOT NULL,
`status` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
--
-- Дамп данных таблицы `cards`
--
--
-- Структура таблицы `users`
--
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL auto_increment,
`usname` varchar(40) NOT NULL,
`uspass` varchar(32) NOT NULL,
`rank` int(11) NOT NULL default '0',
`email` varchar(50) NOT NULL,
`ip` varchar(15) NOT NULL,
`loginip` varchar(15) NOT NULL,
`avatars` varchar(45) NOT NULL default 'avatars/def.png',
`register` int(11) NOT NULL,
`login` int(11) NOT NULL,
`agent` varchar(32) NOT NULL,
`status` varchar(5) NOT NULL default 'user',
`сarcom` varchar(50) NOT NULL,
`winn` int(11) NOT NULL default '0',
`loss` int(11) NOT NULL default '0',
`nich` int(11) NOT NULL default '0',
`zabil` int(11) NOT NULL default '0',
`propustil` int(11) NOT NULL default '0',
`signature` text NOT NULL,
`reiting` int(11) NOT NULL default '0',
`block` tinytext NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=35 ;
--
-- Дамп данных таблицы `users`
--
Спустя 2 минуты, 32 секунды (10.02.2011 - 12:19) Snus написал(а):
blade
У тебя ругается на незакрытое условие IF. ищи ошибку в php коде
У тебя ругается на незакрытое условие IF. ищи ошибку в php коде
Спустя 1 минута, 11 секунд (10.02.2011 - 12:20) blade написал(а):
вот строка на которую ругаеться
if ($visitor != "" AND $visitor != "no_name")
Спустя 34 секунды (10.02.2011 - 12:21) Snus написал(а):
blade
Вот это условие либо не закрыто, либо не открыто по-человечески )
Вот это условие либо не закрыто, либо не открыто по-человечески )
Спустя 4 минуты, 46 секунд (10.02.2011 - 12:26) blade написал(а):
Проверил в phpmyadmin
все работает т.е запрос
выполняется! как теперь вывести значения что использовать
mysql_fetch_assoc() или myqsl_fetch_array()
и как быть с одинаковыми именами полей в users и cards есть поля с одинаковыми именами?
SELECT * FROM `users` AS dbu LEFT JOIN `cards` AS dbc ON dbc.name = dbu.usname WHERE dbu.usname = 'admin'
все работает т.е запрос
$myrow = mysql_query("SELECT * FROM `users` AS dbu LEFT JOIN `cards` AS dbc ON dbc.name = dbu.usname WHERE dbu.usname = '{$visit}'");
выполняется! как теперь вывести значения что использовать
mysql_fetch_assoc() или myqsl_fetch_array()
и как быть с одинаковыми именами полей в users и cards есть поля с одинаковыми именами?
Спустя 2 минуты, 11 секунд (10.02.2011 - 12:28) Snus написал(а):
blade
Логика ясно?
SELECT dbu.usname AS `login`, dbc.name AS `fio`, ....
Логика ясно?
Спустя 55 секунд (10.02.2011 - 12:29) blade написал(а):
Цитата (Snus @ 10.02.2011 - 09:28) |
bladeSELECT dbu.usname AS `login`, dbc.name AS `fio`, .... Логика ясно? |
да спасибо все за помощь!
Спустя 2 минуты, 18 секунд (10.02.2011 - 12:31) Snus написал(а):
blade
Не за что Приятно видеть счастливые каменты ))
Не за что Приятно видеть счастливые каменты ))