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

Форум MySQL

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

 

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

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

тема: Запрос в 2-е таблицы одновремеено выдаёт непонятный результат
 
 автор: olegs7   (23.11.2009 в 13:47)   письмо автору
 
 

Существуют две таблицы с абсолютно одинаковыми столбцами:

table1
[id][name][photo]

table2
[id][name][photo]

Хочу вывести последние 10 записей одновременно из 2x таблиц следующим образом:

$result = mysql_query("SELECT * FROM table1, table2 LIMIT 10");
$count = mysql_num_rows($result);
if ($count != 0)
{
        while ($member[] = mysql_fetch_array($result))
        echo '';

        for ($i = $countN; $i >= 0; $i--)
        {
            $id        = $member[$i]['id'];
            $name      = $member[$i]['name'];
            $photo     = $member[$i]['photo'];

            echo "$id и пр.";
        }
}


Выводит в итоге 10 записей: 3 одинаковые, другие 3 одинаковые, другие 3 одинаковые, ещё 1 другая. Что не так?

  Ответить  
 
 автор: Ильдар   (23.11.2009 в 13:54)   письмо автору
 
   для: olegs7   (23.11.2009 в 13:47)
 

низнай, может тебе лучше JOIN использовать.....???

  Ответить  
 
 автор: olegs7   (23.11.2009 в 14:25)   письмо автору
 
   для: Ильдар   (23.11.2009 в 13:54)
 

А можно какой-то пример привести. Не понимаю, как это сделать.

По сути дела одна таблица это продолжение другой и таких ещё пара есть.

  Ответить  
 
 автор: Trianon   (23.11.2009 в 14:28)   письмо автору
 
   для: olegs7   (23.11.2009 в 14:25)
 

как это - продолжение?
таблицы не образуют последовательности.

  Ответить  
 
 автор: olegs7   (23.11.2009 в 14:32)   письмо автору
 
   для: Trianon   (23.11.2009 в 14:28)
 

Была одна большая таблица, которую разбили на 3.

Нужно сделать запрос абсолютно такой же к трём таблицам, как раньше делался к этой одной большой.

  Ответить  
 
 автор: Trianon   (23.11.2009 в 14:55)   письмо автору
 
   для: olegs7   (23.11.2009 в 14:32)
 

одна таблица, разбитая на три - такое бывает. Есть даже термин - отношение 1:1
Но в этом случае их строки обычно сопоставляются по первичным ключам.
t1.id = t2.id
t1.id = t3.id
и т.д.
В любом случае строки извлекаются не из трех таблиц, а из одного табличного выражения.

Кроме того - независимо от.
LIMIT без указания ORDER BY - не несет никакого логического смысла и является признаком ошибки.

  Ответить  
 
 автор: olegs7   (23.11.2009 в 15:06)   письмо автору
 
   для: Trianon   (23.11.2009 в 14:55)
 

Спасибо за подробный ответ! Помогли.

  Ответить  
 
 автор: а-я   (23.11.2009 в 14:19)   письмо автору
 
   для: olegs7   (23.11.2009 в 13:47)
 

наверно лучше воспользоваться UNION

  Ответить  
 
 автор: olegs7   (23.11.2009 в 14:40)   письмо автору
 
   для: а-я   (23.11.2009 в 14:19)
 

Получается запрос:
SELECT * FROM table1 UNION SELECT * FROM table2 LIMIT 10

Выводит всё правильно. А можно ещё как-то это записать?

  Ответить  
 
 автор: Valick   (23.11.2009 в 14:24)   письмо автору
 
   для: olegs7   (23.11.2009 в 13:47)
 

уже вижу, как кто-то с дьявольским огоньком в глазах заряжает свой карабин деревянными пулями))) прячтесь

  Ответить  
 
 автор: olegs7   (23.11.2009 в 14:35)   письмо автору
 
   для: Valick   (23.11.2009 в 14:24)
 

результат такой же)

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

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