Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Выборка из 2-х таблиц
 
 автор: MAN|AK   (19.01.2007 в 00:18)   письмо автору
 
 

Добрый день.
Есть такой запрос, проблем в том как вывести результат?


$s = mysql_query("select T1.name, T1.id_group, T2.id, T2.name from users as T1, groups as T2 where T1.id_group=T2.id");
while($r = mysql_fetch_array($s))
{
    echo $r['name']."<br>";
}


Как видно в обеих таблицах есть поле name, а при выводе $r['name'], выводится значение из таблицы Т2, какие здесь правила выборки, подскажите.

   
 
 автор: dert   (19.01.2007 в 10:47)   письмо автору
 
   для: MAN|AK   (19.01.2007 в 00:18)
 

попробуйте так:

$s = mysql_query("select T1.name as names, T1.id_group, T2.id, T2.name from users as T1, groups as T2 where T1.id_group=T2.id");
while($r = mysql_fetch_array($s))
{
echo $r['names']."<br>";
}

   
 
 автор: MAN|AK   (19.01.2007 в 20:07)   письмо автору
 
   для: dert   (19.01.2007 в 10:47)
 

Спасибо, всё работает. =)

   
 
 автор: provodnik   (28.01.2007 в 18:14)   письмо автору
 
   для: dert   (19.01.2007 в 10:47)
 

dert, а подскажите как поступить в моем случае?
Аналогичная ситуация, только не перечисляются какие то конкретные поля, а выбираются значения всех столбцов:

<?
$query 
mysql_query("SELECT FROM board as A, board_cat as B WHERE A.id_category = B.id AND A.id_category = "$_GET['id_cat']." ORDER by autor ASC LIMIT $start$COUNT_SHOW_BOARD");     
    while(
$var mysql_fetch_array($query))
    {    
    echo 
$var['name_cat'];
                      }
?>


Вопрос: возможно ли "поиметь" допустим поле "id" первой таблицы (board), не расписывая и присваивая "псевдонимы" всем полям?
Спасибо...

   
 
 автор: Trianon   (28.01.2007 в 18:24)   письмо автору
 
   для: provodnik   (28.01.2007 в 18:14)
 

Поля id у Вас нету. Поле id_category присутствует сразу в двух таблицах.
Уточнять придется.
Вернее, есть один вариант, при котором уточнение не требуется, но он зависит от версии MySQL и я его приводить не буду.

А почему Вас не устраивает указать нужное поле явно?

   
 
 автор: provodnik   (28.01.2007 в 18:52)   письмо автору
 
   для: Trianon   (28.01.2007 в 18:24)
 

Ситуация такова: я выбираю всё ( * ), что есть в обоих таблицах,
с некоторым условием:

<?
WHERE     A
.id_category B.id 
                        
                        
AND        A.id_category ". $_GET['id_cat']." 
                                
                        
ORDER by autor ASC
                        LIMIT $start
$COUNT_SHOW_BOARD");
?>

И теперь мне понадобилось поле "id" из первой таблицы.
Я могу конечно присвоить этому полю id псевдоним (A.id as board_id). Но не придется ли мне после этого присваивания явно перечислять все остальные поля, которые я выбираю?

Вот я наваял примерный код, который будет работать и отдаст мне поле "id" из первой таблицы по псевдониму board_id, но мне бы не хотелось такую "телегу" писать:


<?
$query 
mysql_query    ("SELECT     A.id as board_id,
                                    A.id_category,
                                    A.autor,
                                    A.title,
                                    A.email,
                                    A.address,
                                    A.phone,
                                    A.text,
                                    A.hits,
                                    A.select,
                                    A.checkbox_top,
                                    A.time,
                                    A.time_delete,
                                    A.pass_delete,
                                    A.last_edit,
    
                                    B.id,
                                    B.root_category,
                                    B.name_cat,
                                    B.url_name,
                                    B.description,
                                    B.img,
                                
                        FROM     board as A, 
                                board_cat as B 
                                
                        WHERE     A.id_category = B.id 
                        
                        AND        A.id_category = "
$_GET['id_cat'].
                                
                        ORDER by autor ASC
                        LIMIT 
$start$COUNT_SHOW_BOARD");
?>


Вот отсюда и вопрос: Возможно ли как то вытащить это поле id, без перечисления всех полей, а обойтись только присваиванием ей псевдонима A.id as board_id, а выбор остальных полей сделать звездочкой?
Спасибо...

   
 
 автор: Trianon   (28.01.2007 в 19:00)   письмо автору
 
   для: provodnik   (28.01.2007 в 18:52)
 

В принципе, можно попробовать что-то вроде

SELECT A.id as board_id,  A.*, B.*  FROM ...

   
 
 автор: provodnik   (28.01.2007 в 19:34)   письмо автору
 
   для: Trianon   (28.01.2007 в 19:00)
 

Спасибо, именно то, что нужно...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования