[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Выборка
kuzroman
есть 2 таблицы

files с полями id и id_films
и films с полем id

поле id уникально в обоих таблицах
в поле id_films значения могут повторятся

допустим заполнены они так:

films
id
1
2
3
4
5

files
id | id_films
1 | 1
2 | 1
3 | 4
4 | 4
5 | 5

нужно сделать выборку между полем films.id и files.id_films
выбрав отсутствующие значения в id_films

, т.е. это 2 и 3



Спустя 13 минут, 57 секунд (8.01.2012 - 15:00) kuzroman написал(а):
по сути нужно вбрать все id 1й таблицы, все distinct id_films 2й таблицы и оставить только несовпадающие значения

Спустя 18 минут, 52 секунды (8.01.2012 - 15:19) 10ozoz написал(а):
Тебе нужно оставить какие не совпадают ? если я правильно понял то вот тебе код .. проверил у меня работает .

result = $conn->query ("SELECT * FROM film ");
while ($rows = $result->fetch_array()){
if($rows['id'] != $rows['id_film']){
echo "OK <br>";
}
}

Спустя 25 минут, 27 секунд (8.01.2012 - 15:44) Placido написал(а):
SELECT 
`id`
FROM
`films`
WHERE
`id` NOT IN (SELECT
`id_films`
FROM
`files`);

Спустя 2 часа, 6 минут, 58 секунд (8.01.2012 - 17:51) kuzroman написал(а):
Проблема в том что у меня почти по 20000 записей в таблицах, работают узасно долго оба варианта
Чтож буду думать. Спасибо.

Спустя 17 минут, 22 секунды (8.01.2012 - 18:08) kuzroman написал(а):
оптимальный вариант в данном случае видимо

создать 2 массива с id
прогнать foreach один в другом, убивая совпадающие ячейки
тратит секунд 55 на выполнение.
(20000 x 10000 строк в таблицах)

Хотя можно попробовать проиндексировать поле id_films. может быть будет проходить быстрее


_____________
kuzroman@list.ru
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.