|
|
|
| Есть база из 2-х таблиц:
первая tbl1
id int
my_text text
my_opisanie text
my_katalog int
вторая tbl2
id int
katalog_name text
---------------------------------
еид1.my_katalog - поле идентичное полю tbl2.id.
Хочу сделать выборку следующего плана:
поля tbl1.id, tbl1.my_text, tbl1.my_opisanie, tbl2.katalog_name а также, т.е. строки таблицы имеющие одинаковое значение tbl1.my_katalog (если есть 5 строк с tbl1.my_katalog=1, то соответственно получаем 5 ну и т.д).Если в столбце my_katalog отсутствуют записи, присутствующие в tbl2.id аписываем 0.
Сейчас реализовал такую возможность, но 2-мя запросами. Возможно ли осуществить такую выборку за раз? Как я подозреваю возможно через UNION. | |
|
|
|
|
|
|
|
для: Director_Of_Zoo
(21.02.2007 в 09:19)
| | tbl2.katalog_name а также, т.е. строки таблицы
тут явно что-то пропущено.
Вам нужно что-топохожее на
SELECT tbl1.id, my_text, my_opisanie, katalog_name
FROM tbl1 LEFT JOIN tbl2 ON my_katalog = tbl2.id
|
| |
|
|
|
|
|
|
|
для: Trianon
(21.02.2007 в 10:56)
| | Та коно так, я такое решение тоже пытался применить, но он возвращает только 1 строку из таблицы tbl2, если в tbl1 одна строка с соответствующим индексом tbl2.id. Может не правильно сформулировал, но мне надо чтоб вернулись все позиции из tbl1 а из второй требуются количество строк, совпадающее по значению (my_katalog = tbl2.id). Если таковых нет - получаем ноль. | |
|
|
|
|
|
|
|
для: Director_Of_Zoo
(21.02.2007 в 20:27)
| |
SELECT tbl1.id, my_text, my_opisanie, COUNT(tbl2.id)
FROM tbl1 LEFT JOIN tbl2 ON my_katalog = tbl2.id
GROUP BY tbl1.id
|
| |
|
|
|
|
|
|
|
для: Trianon
(21.02.2007 в 20:45)
| | то что надо.... спасибо Trianon | |
|
|
|
|
|
|
|
для: Trianon
(21.02.2007 в 20:45)
| | и ещё в продолжении темы...
а если в таблице есть поля по которым надо поставить жёсткие условия, например:
tbl2.pole1="yes" и
tbl1.pole2="yes".
У меня получается как то криво то выпадают из таблицы результаты, то вообще одна строчка всего возвращается... поэтому и не привожу свои варианты... | |
|
|
|
|
|
|
|
для: Director_Of_Zoo
(22.02.2007 в 20:12)
| | Вы сказали, что в tbl2 строк может и не быть.
А теперь оказывается, что там непременно должно быть что-то конкретное записано. | |
|
|
|
|
|
|
|
для: Trianon
(22.02.2007 в 20:17)
| | строки могут быть а могут и не быть. Чего тут так вас возмутило. Просто если они есть то хотелось бы отсеять их по критерию что выше.
Добавлено
Нашёл решение сам:
SELECT
tbl1.id,
my_text, my_opisanie,
COUNT(tbl2.id) AS FIELD_1
FROM tbl1 LEFT JOIN tbl2 ON ((my_katalog = tbl2.id) AND (tbl2.pole1="yes") )
WHERE
tbl1.pole2="yes"
GROUP BY tbl1.id
|
| |
|
|
|