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

Форум MySQL

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

 

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

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

тема: Выборка из 3 таблиц
 
 автор: Лена   (19.03.2009 в 13:59)   письмо автору
1.1 Кб
 
 

Помогите составить запрос.
Есть три таблицы, связанные между собой по общему полю tid.
Структура - в аттаче.
`term_data` - общая информация про термины
`term_hierarchy` - связь родитель-потомок
`term_node` - связь термина с определенной страницей.
поле `vid` в `term_data` и поле `vid` в `term_node` - два разных, никак не связанных между собой поля(просто название одинаковое)
Нужно составить запрос, который выбирает из таблиц поля: name,tid,nid. Все в одном запросе.
Нужно получить ссылку типа:
while ($term = db_fetch_object($result)) {
$page_content .= l($term->name,"library/$term->tid/$term->nid") . '<br />';
}

Пробовала вот так:

<?php
  $result 
db_query("
    SELECT td.name, td.tid
    FROM {term_data} td
    INNER JOIN {term_hierarchy} th ON td.tid = th.tid
    WHERE th.parent = %d"
,
    
$tid //параметр получаю через $_GET
  
);
?>

Но при этом nid не выбирается. Как включить третью таблицу?
На синтаксис внимания не обращаем. Так надо.

  Ответить  
 
 автор: Root   (19.03.2009 в 16:13)   письмо автору
 
   для: Лена   (19.03.2009 в 13:59)
 

запутано как-то всё..
SELECT td.name, td.tid, tn.nid
    FROM term_data td
    JOIN term_hierarchy th ON td.tid = th.tid
    JOIN term_node tn ON td.tid = tn.tid
    WHERE th.parent = x;

  Ответить  
 
 автор: Лена   (19.03.2009 в 16:33)   письмо автору
 
   для: Root   (19.03.2009 в 16:13)
 

Спасибо, помогло
Сделала вот так, потому что tn.tid может и не быть:

SELECT td.name, td.tid, tn.nid
FROM term_data td
INNER JOIN term_hierarchy th ON td.tid = th.tid
LEFT JOIN term_node tn ON td.tid = tn.tid
WHERE th.parent =%d


Скажите, а INNER JOIN и просто JOIN - это одно и то же?

  Ответить  
 
 автор: Root   (19.03.2009 в 16:41)   письмо автору
 
   для: Лена   (19.03.2009 в 16:33)
 

да, это синонимы.

  Ответить  
Rambler's Top100
вверх

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