Forum Webscript.Ru

Общие => Базы данных => Тема начата: BioIgor от 24 Мая 2005, 20:44:28

Название: Проблема с поиком =(
Отправлено: BioIgor от 24 Мая 2005, 20:44:28
MySQL выдаёт ошибку "Column \'*****\' in where clause is ambiguous", как мне это избежать??? Сама база данных должна состоять из нескольких однотипных таблиц.
Пример:

create table tab1
(
    Nr int unsigned not null auto_increment primary key,
    nosaukums char(200) not null,
    zv_kods char(20),
    inv_kart_nr int unsigned,
    cena float(15,2) unsigned not null,
    atlikums_per_sak int unsigned not null,
    izdots int unsigned,
    atlikums_per_beig int unsigned not null
);

create table tab2
(
   Nr int unsigned not null auto_increment primary key,
   nosaukums char(200) not null,
   zv_kods char(20),
   inv_kart_nr int unsigned,
   cena float(15,2) unsigned not null,
   atlikums_per_sak int unsigned not null,
   izdots int unsigned,
   atlikums_per_beig int unsigned not null
);



Скрипт поиска на PHP
Название: Проблема с поиком =(
Отправлено: sarutobi от 24 Мая 2005, 21:48:55
Ты бы хоть запрос привел, после кторого сообщение появляется...
Про структуру таблиц - твоя головная боль, тайный смысл сих действий мне не ясен....
Название: Проблема с поиком =(
Отправлено: sarutobi от 24 Мая 2005, 21:51:09
а просит он всего ничего: опиши из какой таблицы поле в  where указано, а то две таблицы содержат одно и то же имя поля.....
например tab1.nr вместо nr.
Название: Проблема с поиком =(
Отправлено: BioIgor от 24 Мая 2005, 21:56:45
Дело в том, что мне именно так и надо (чтобы были одинаковые поля)
Текст запроса таков:
select * from tab1,tab2 where cena like 0.06;
Название: Проблема с поиком =(
Отправлено: sarutobi от 24 Мая 2005, 22:08:31
куча ошибок в запросе
select * from tab1,tab2 where cena like 0.06
1. select * from tab1,tab2 вернет декартово произведение записей (число записей в tab1*число записей в tab2)
2. Определись, из какой таблицы нужно брать cena (tab1.cena или tab2.cena)
3. cena like 0.06 должно выглядеть как cena=0.06
4. идем вот сюда http:/www.mysql.ru и читаем раздел для новичков, узнаем много нового и полезного про построение запросов
Название: Проблема с поиком =(
Отправлено: BioIgor от 24 Мая 2005, 22:14:35
Поясни PLS толково. =)))))
Запрос "cena" мне надо из обеих табли одновременно.
Запрос типа:
select * from tab1 where cena like 0.06;
Выдаёт именно то что мне надо и даже не ругается. Кстати сайт не грузится =(((
Название: Проблема с поиком =(
Отправлено: sarutobi от 24 Мая 2005, 22:59:12
http://www.mysql.ru
http://citforum.ru - раздел базы данных
http://www.sql.ru/
После этого вопросы должны исчезнуть
Название: Проблема с поиком =(
Отправлено: commander от 25 Мая 2005, 10:34:11
sarutobi
Цитировать
1. select * from tab1,tab2 вернет декартово произведение записей (число записей в tab1*число записей в tab2)

что подразумеваеться под этим выражением: "вернет декартово произведение записей" ?
BioIgor
Цитировать
select * from tab1 where cena like 0.06;
Выдаёт именно то что мне надо и даже не ругается. Кстати сайт не грузится =(((

использование LIKE тут обсалютно не нужно...
Название: Проблема с поиком =(
Отправлено: BioIgor от 25 Мая 2005, 10:47:28
Ну а как мне тогда сделать этот ё.....й запрос? Я только новичёк во всём этом. Хоть бы простенький пример привели, что ли =((((((
1) Как сделать запрос на колонку находящейся в двух и более одинаковых таблицах? (Вывод должен быть полным т.е. всё содержимое n-ой строки)????
Или 2) Как сделать поиск по двум колонкам одной таблици одновременно???????
Зарание огромное спасибо!
Название: Проблема с поиком =(
Отправлено: sarutobi от 25 Мая 2005, 19:30:36
Commander:
Декартово произведение ( я привел формулу) = в n-мерном пространстве произведение числа точек по всем измерениям ( в данном случае произведение числа строк в одной таблице на число строк в другой).
Добавлено специально по просьбе Commander:
Т.Е.
Число записей, которые вернет запрос, соответствует произведению числа строк одной таблицы на число строк в другой. Каждая запись будет содержать все поля из обеих таблиц.

BioIgor:
1. так как у тебя таблицы содержат одни и те же столбцы ( честное слово, не знаю зачем это ....):
Select Nr,nosaukums, zv_kods, inv_kart_nr,cena,atlikums_per_sak,
izdots,atlikums_per_beig
From tab 1
where price=0.06
UNION
Select Nr,nosaukums, zv_kods, inv_kart_nr,cena,atlikums_per_sak,
izdots,atlikums_per_beig
From tab 2
where price=0.06;

Не уверен в том, что можно ставить звезду в запросах, объединяемых по UNION.

2. Select * from tab1 where price=0.06 AND [OR] второе условие выбора.
Название: Проблема с поиком =(
Отправлено: commander от 26 Мая 2005, 09:17:08
sarutobi
Цитировать
Декартово произведение ( я привел формулу) = в n-мерном пространстве произведение числа точек по всем измерениям ( в данном случае произведение числа строк в одной таблице на число строк в другой)

хммм.... ну тут пожалуй можно порекомендовать почитать какие-нибудь книжки по основам SQL, и что уж точно, дак это не давать ответы на вопросы в этом форуме... хотя бы в ближайшие несколько месяцев....