|
|
|
| Люди, всех приветствую! Помогите плиз, решить простенький вопрос, но увы не для меня...
Условия: MYSQL 4.1.7, есть две таблицы (vopros и otvet), которые между собой связаны полем numberid (поле использует уникальные значения, повторения не допустимы)
Задача: Подскажите как сделать выборку тех значений из таблицы vopros.numberid, которых нету в таблице otvet.numberid
пробовал 2 запроса:
1.
select vopros.numberid, otvet.pid,IF(vopros.numberid=otvet.numberid,"y","n") FROM vopros, otvet group by vopros.numberid order by vopros.numberid desc;
|
2.
select vopros.numberid as vopros, otvet.numberid as otvet, count(*),IF(vopros.numberid=otvet.numberid,"y","n") FROM vopros, otvet where IF(vopros.numberid=otvet.numberid,"y","n")='n' group by vopros.numberid order by vopros.numberid desc ;
|
Хелп, что я делаю не так???? | |
|
|
|
|
|
|
|
для: Jura
(26.10.2005 в 18:52)
| | Нет здесь пожалуй только через вложенные запросы можно получить ответ
SELECT numberid FROM vopros WHERE numberid NOT IN (SELECT numberid FROM otvet)
|
| |
|
|
|
|
|
|
|
для: cheops
(26.10.2005 в 20:49)
| | Спасибо КОЛЛЕГА, ты меня спас..... Работает..... Премного благодарен. | |
|
|
|
|
|
|
|
для: cheops
(26.10.2005 в 20:49)
| | Люди, хелп! На mysql 4.0.25 код который ниже не работает, подскажите плиз... как заставить... работать...
Желательно в один запрос.
SELECT numberid FROM vopros WHERE numberid NOT IN (SELECT numberid FROM otvet)
|
Код исполняется через php
$query_lishnee="SELECT numberid FROM vopros WHERE numberid NOT IN (SELECT numberid FROM otvet) ";
$result5=mysql_query($query_lishnee);
$lishnee = mysql_result( $result5, 0, 0 ) ; // лишнее
|
Выдает, что не поддерживается данный запрос.
Где ошибка? плиз... | |
|
|
|
|
|
|
|
для: Jura
(03.12.2005 в 12:47)
| | Вложенные запросы появились только начиная с 4.0.1... NOT IN практически невозможно в один запрос конвертировать в отличии от IN... | |
|
|
|
|
|
|
|
для: Jura
(03.12.2005 в 12:47)
| | Посмотрите на это:
-- создаём и заполняем две таблицы для теста:
DROP TABLE IF EXISTS vopros;
CREATE TABLE vopros (
numberid int(11) NOT NULL default '0'
) TYPE=MyISAM;
INSERT INTO vopros VALUES (1),(2),(3),(4),(5),(6),(7);
DROP TABLE IF EXISTS otvet;
CREATE TABLE otvet (
numberid int(11) NOT NULL default '0'
) TYPE=MyISAM;
INSERT INTO otvet VALUES (1),(2),(4),(6);
-- а это запрос который должен помочь:
SELECT vopros.numberid
FROM vopros
LEFT JOIN otvet ON vopros.numberid = otvet.numberid
WHERE otvet.numberid IS NULL
|
можно запустить этот код прямо в phpmyadmin
на выходе будет выборка значений из первой таблицы, которых нет во второй.
В данном случае это 3, 5, 7
Удачи. | |
|
|
|