Forum Webscript.Ru
Общие => Базы данных => Тема начата: 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
-
Ты бы хоть запрос привел, после кторого сообщение появляется...
Про структуру таблиц - твоя головная боль, тайный смысл сих действий мне не ясен....
-
а просит он всего ничего: опиши из какой таблицы поле в where указано, а то две таблицы содержат одно и то же имя поля.....
например tab1.nr вместо nr.
-
Дело в том, что мне именно так и надо (чтобы были одинаковые поля)
Текст запроса таков:
select * from tab1,tab2 where cena like 0.06;
-
куча ошибок в запросе
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 и читаем раздел для новичков, узнаем много нового и полезного про построение запросов
-
Поясни PLS толково. =)))))
Запрос "cena" мне надо из обеих табли одновременно.
Запрос типа:
select * from tab1 where cena like 0.06;
Выдаёт именно то что мне надо и даже не ругается. Кстати сайт не грузится =(((
-
http://www.mysql.ru
http://citforum.ru - раздел базы данных
http://www.sql.ru/
После этого вопросы должны исчезнуть
-
sarutobi
1. select * from tab1,tab2 вернет декартово произведение записей (число записей в tab1*число записей в tab2)
что подразумеваеться под этим выражением: "вернет декартово произведение записей" ?
BioIgor
select * from tab1 where cena like 0.06;
Выдаёт именно то что мне надо и даже не ругается. Кстати сайт не грузится =(((
использование LIKE тут обсалютно не нужно...
-
Ну а как мне тогда сделать этот ё.....й запрос? Я только новичёк во всём этом. Хоть бы простенький пример привели, что ли =((((((
1) Как сделать запрос на колонку находящейся в двух и более одинаковых таблицах? (Вывод должен быть полным т.е. всё содержимое n-ой строки)????
Или 2) Как сделать поиск по двум колонкам одной таблици одновременно???????
Зарание огромное спасибо!
-
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] второе условие выбора.
-
sarutobi
Декартово произведение ( я привел формулу) = в n-мерном пространстве произведение числа точек по всем измерениям ( в данном случае произведение числа строк в одной таблице на число строк в другой)
хммм.... ну тут пожалуй можно порекомендовать почитать какие-нибудь книжки по основам SQL, и что уж точно, дак это не давать ответы на вопросы в этом форуме... хотя бы в ближайшие несколько месяцев....