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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: вопрос по выводу данных

Сообщения:  [1-5] 

 
 автор: куч1963   (21.03.2006 в 22:58)   письмо автору
 
   для: Trianon   (21.03.2006 в 15:50)
 

Большое спасибо за совет.
Все прошло на ура.

   
 
 автор: Trianon   (21.03.2006 в 15:50)   письмо автору
 
   для: куч1963   (21.03.2006 в 15:34)
 

Наоборот.
В разделе ON - условие связывания таблиц
В разделе WHERE - условие фильтрации данных

SELECT нужные поля
FROM таблица1 JOIN таблица2 ON таблица1.ключ1 = таблица2.ключ2
WHERE таблицаN.полеN = независимый_параметр

$query = "SELECT categories.id_categ AS cid, categories.name AS name, subcategories.id_subcateg AS sid, subcategories.name AS sname FROM categories INNER JOIN subcategories ON subcategories.id_cat= categories.id_categ WHERE categories.id_dir=".$_GET['id_dir']." ORDER BY categories.name";

   
 
 автор: куч1963   (21.03.2006 в 15:34)   письмо автору
 
   для: Trianon   (21.03.2006 в 14:14)
 

Если я Вас правильно понял, то правильно запрос должен выглядеть где-то так

$query = "SELECT categories.id_categ AS cid, categories.name AS name, subcategories.id_subcateg AS sid, subcategories.name AS sname  FROM categories INNER JOIN  subcategories  ON categories.id_dir=".$_GET['id_dir']."  WHERE subcategories.id_cat= categories.id_categ   ORDER BY categories.name";

   
 
 автор: Trianon   (21.03.2006 в 14:14)   письмо автору
 
   для: куч1963   (21.03.2006 в 14:06)
 

Потому что LEFT. Раз LEFT , значит нужны все записи левой таблицы, а не только те, которым есть соответствие.

И еще. Если Вы применяете JOIN ....ON то в условии ON должно находиться только равенство, задающее соответствие. Все остальные условия должны быть убраны под WHERE.

   
 
 автор: куч1963   (21.03.2006 в 14:06)   письмо автору
 
 

имеется три таблицы
передаю методом get переменную в скрипт
$_GET['id_dir'];
делаю запрос на таблицы
categories |id_categ|name|id_dir - внешний ключ
subcategories |id_subcateg|name|id_cat - внешний ключ к id_categ

$query = "SELECT categories.id_categ AS cid, categories.name AS name, subcategories.id_subcateg AS sid, subcategories.name AS sname  FROM categories LEFT JOIN  subcategories  ON categories.id_dir=".$_GET['id_dir']."  AND subcategories.id_cat= categories.id_categ  ORDER BY categories.name";

делаю выборку

$rez = mysql_query($query);

$name = "";
while($menu = mysql_fetch_array($rez))
{
  if($name != $menu['name'])
  {         
    echo "<li>".$menu['name']."<br>";
    $name = $menu['name'];
  }         
  echo "&nbsp;".$menu['sname']."<<br>";


хотел получить поля $menu['name'] которые соответствуют $_GET['id_dir'];
но в результате вываливается все содержимое таблицы categories.
Почему это происходит.
Заранее спасибо.

   

Сообщения:  [1-5] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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