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

Форум MySQL

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

 

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

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

тема: помогите с запросом
 
 автор: kukurikan   (10.08.2009 в 23:25)   письмо автору
 
 

есть 2 таблицы:

tb1
-------------
id | type |
-------------
1 | tb1_1 |
-------------
2 | tb1_2 |
-------------

tb2
-------------
id | type |
-------------
1 | tb2_1 |
-------------
2 | tb2_2 |
-------------



нужно что бы на страницу вышло следующее:

<table>

<tr><td>tb1_1</td><td>tb2_1</td></tr>
<tr><td>tb1_2</td><td>tb2_2</td></tr>

<table>

сам запрос полагаю может выглядеть так:
$sql = mysql_query("SELECT tb1.type AS t1, tb2.type AS t2 FROM tb1 LEFT JOIN tb2 ");
echo'<table>';
while($w = mysql_fetch_array($sql)){
echo "<tr><td>".$w['t1']."</td><td>".$w['t2']."</td></tr>";
}
echo'</table>';
но не работает
помогите пожалуйста с решением даной проблемы.

  Ответить  
 
 автор: Trianon   (10.08.2009 в 23:44)   письмо автору
 
   для: kukurikan   (10.08.2009 в 23:25)
 

tb1 LEFT JOIN tb2

здесь Вы явно не дописали условие.

  Ответить  
 
 автор: kukurikan   (11.08.2009 в 00:10)   письмо автору
 
   для: kukurikan   (10.08.2009 в 23:25)
 

хорошо, немного перепишем, но все равно не работает



$sql = mysql_query("SELECT  tb1.id AS tb1_id, tb1.type AS type1, tb2.id AS tb2_id, tb2.type AS type2 FROM tb1 LEFT JOIN tb2  ON tb1_id = tb2_id");
echo'<table>';
while($w = mysql_fetch_array($sql)){
echo "<tr><td>".$w['type1']."</td><td>".$w['type2']."</td></tr>";
}

  Ответить  
 
 автор: Trianon   (11.08.2009 в 00:13)   письмо автору
 
   для: kukurikan   (11.08.2009 в 00:10)
 

В phpMyAdmin запрос пробовали выполнять?

Ссылаться на алиасы раздела SELECT из раздела ON - негуманно.
Выражения в SELECT выполняются позже, чем выражения в ON
Лучше указать там явные поля.

  Ответить  
 
 автор: kukurikan   (11.08.2009 в 00:19)   письмо автору
 
   для: Trianon   (11.08.2009 в 00:13)
 

а можно немного поподробнее ?

  Ответить  
 
 автор: а-я   (11.08.2009 в 00:32)   письмо автору
 
   для: kukurikan   (11.08.2009 в 00:19)
 


ON tb1_id = tb2_id


таких полей у Вас нет! не используйте алиасы в подобных местах

  Ответить  
 
 автор: Trianon   (11.08.2009 в 00:41)   письмо автору
 
   для: kukurikan   (11.08.2009 в 00:19)
 

>>В phpMyAdmin запрос пробовали выполнять?

Что здесь непонятно?

  Ответить  
 
 автор: kukurikan   (11.08.2009 в 01:21)   письмо автору
 
   для: Trianon   (11.08.2009 в 00:41)
 

нет не пробовал, но у меня получилось вот так :


$sql = mysql_query("SELECT  tb1.id AS tb1_id, tb1.type AS type1, tb2.id AS tb2_id, tb2.type AS type2 FROM tb1 LEFT JOIN tb2  ON tb1.id = tb2.id");



ON tb1.id = tb2.id


и выборка происходит как мне нужно:



a1 | b1
a2 | b2
a3 | b3



потому как у всех ключи одинаковые(сходяться)

но если я поменяю ключ для ячейки a1 тоесть вместо 1 поставим 4, тогда:



NULL  |    b1
  a2     |   b2
  a3     |   b3



тоесть нужно сделать выборку независимо от совместимости ключей. тоесть как то сортировать ? но как ?

  Ответить  
 
 автор: Trianon   (11.08.2009 в 01:26)   письмо автору
 
   для: kukurikan   (11.08.2009 в 01:21)
 

>нет не пробовал,

зря. искать одновременно ошибки и в SQL и в php - занятие малоприятное.


>но у меня получилось вот так :
>$sql = mysql_query("SELECT tb1.id AS tb1_id, tb1.type AS type1, tb2.id AS tb2_id, tb2.type AS type2 FROM tb1 LEFT JOIN tb2 ON tb1.id = tb2.id");

не надо вытягивать код в одну строку.
Он в окне не умещается.
>но если я поменяю ключ для ячейки a1 тоесть вместо 1 поставим 4, тогда:
>
>

>
>NULL  |    b1
>  a2     |   b2
>  a3     |   b3
>
>

>
>тоесть нужно сделать выборку независимо от совместимости ключей. тоесть как то сортировать ? но как ?

А какой отклик Вы ожидаете?

  Ответить  
 
 автор: kukurikan   (11.08.2009 в 10:59)   письмо автору
 
   для: Trianon   (11.08.2009 в 01:26)
 

в таблице tb1 и tb2 лежат записи:



table: tb1                       table:  tb2
                              
--------------------               --------------------
 id  |    type   |               id  |    type   |           
--------------------              --------------------
 1   |   tb1_1  |               1   |    tb2_1 |
--------------------              --------------------
 2   |   tb1_2  |               2   |   tb2_2  |
--------------------               --------------------



при запросе:


$sql = mysql_query("SELECT tb1.id AS tb1_id, tb1.type AS type1, 
                                            tb2.id AS tb2_id, tb2.type AS type2 
                                            FROM tb1 LEFT JOIN tb2 
                                            ON tb1.id = tb2.id");


происходит нужный вывод:



  tb1_1      tb2_1
  tb1_2      tb2_2



но при удалении из таблицы tb2 записи с ключом 1, и затем добавление другой записи, ключ будет другой:



table: tb1                       table:  tb2
                              
--------------------               --------------------
 id  |    type   |               id  |    type   |           
--------------------              --------------------
 1   |   tb1_2  |               2   |    tb2_1 |
--------------------              --------------------
 2   |   tb1_3  |               3   |   tb2_2  |
--------------------               --------------------



после этого запрос:



$sql = mysql_query("SELECT tb1.id AS tb1_id, tb1.type AS type1, 
                                            tb2.id AS tb2_id, tb2.type AS type2 
                                            FROM tb1 LEFT JOIN tb2 
                                            ON tb1.id = tb2.id");



вернет:



  tb1_1      NULL
  tb1_2      tb2_2


тоесть мне важен запрос при котором выводиться будет все со смещением вверх по ключам тоесть
если удалился ключ 1 в таблице tb2 и вместо него вверх встал ключ 2,

table: tb1                       table:  tb2
                              
--------------------               --------------------
 id  |    type   |               id  |    type   |           
--------------------              --------------------
 1   |   tb1_2  |               2   |    tb2_2 |
--------------------              --------------------
 2   |   tb1_3  |               3   |   tb2_3  |
--------------------               --------------------



то и вывод необходим соответствено:



  tb1_1      tb2_2
  tb1_2      tb2_3

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

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