problemche
14 отговора
420 прегледа
problemche
Zdrasti. imam sledniq problem. trqbva da pravq razspisanie za prevozi. i imam 2 koloni v tablicata : ednata e otkyde se trygva (fromc), drugata e kyde pristiga (toc). ima nrmalizaciq, t.e. imam si otdelna tablica koqto mi dyrji gradovete. obache kogato napisha sql-a: select table.id, gradove.value as fromgrad, gradove.value as tograd from gradove, table where table.id = 5 and fromc = gradove.id and toc = gradove.id, ne mi izkarva rezultati. Estestveno zashtoto gradove.id v tova uslovie ne moje da e ravno i na ediniq i na drugiq grad. ako premahna uslovieto za toc = gradove.id naprimer i stane: select table.id, gradove.value as fromgrad, gradove.value as tograd from gradove, table where table.id = 5 and fromc = gradove.id; rezultatite mi imat vida:
x, grad1, grad1. kak da napisha sql-a taka che da si izkaram gradovete kakto trqbva, t.e x, grad1, grad2.
10x
x, grad1, grad1. kak da napisha sql-a taka che da si izkaram gradovete kakto trqbva, t.e x, grad1, grad2.
10x
eto pak
sorry, shte obqsnq po-podrobno.
kogato napisha:
SELECT razspisanie.id, cities.value as trygva_ot_grad, cities.value as pristiga_v_grad from razspisanie, cities where razspisanie.id = 1 and trygva_ot_grad = cities.id and pristiga v grad = cities.id;
rezultatite imat vida:
Ta, vyprosyt mi beshe, kak moga da si gi polucha taka:
Ili da pocheta za self joins?. Mai tova shte da e
P.S.tova \[pre\] me poburka...
------------------------------- ----------------------------
| razspisanie | | cities |
------------------------------- ----------------------------
id | trygva_ot_grad | pristiga_vyv_grad | | id | value |
------------------------------- ----------------------------
1 | 5 | 7 | | 2 | Varna |
------------------------------- ----------------------------
2 | 2 | 7 | | 5 | Burgas |
-------------------------------- ----------------------------
| 7 | Pleen |
---------------------------------------------------------------
kogato napisha:
SELECT razspisanie.id, cities.value as trygva_ot_grad, cities.value as pristiga_v_grad from razspisanie, cities where razspisanie.id = 1 and trygva_ot_grad = cities.id and pristiga v grad = cities.id;
rezultatite imat vida:
-----------------------------
id | trygva_ot_grad | pristiga_v_grad |
-----------------------------
1 | Varna | Varna |
-----------------------------
Ta, vyprosyt mi beshe, kak moga da si gi polucha taka:
-----------------------------
id | trygva_ot_grad | pristiga_v_grad |
-----------------------------
1 | Varna | Pleen |
-----------------------------
Ili da pocheta za self joins?. Mai tova shte da e
P.S.tova \[pre\] me poburka...
Re: че ти и в началото имаше Join
просто ти трябва таблицата с градовете 2 пъти да я свържеш
select table.id, g1.value as fromgrad, g2.value as tograd
from table, gradove as g1, gradove as g2
where table.id = 5
and fromc = g1.id and toc = g2.id;
salle.online.bg/sig
select table.id, g1.value as fromgrad, g2.value as tograd
from table, gradove as g1, gradove as g2
where table.id = 5
and fromc = g1.id and toc = g2.id;
salle.online.bg/sig
Редактирано от salle на
Re: че ти и в началото имаше Join
tochno tova napravih, no mi e za pryv pyt da izpolzvam podobni hvatki i mi trqbvashe malko vreme
Re: назад към учебниците :)
Никакви хватки не са това.
Релационтите Бази Данни дефинират Таблиците като множества от редове.
В случая от едното множествн - на градовете ти трябват две подмножества и затова за момент си го представяш като две множества
т.е. Градовете се представят като Градове за пристигане и Градове за Тръгване ако искаш
И ако се го нарисунаш на хартия ще получиш нещо като формулата на водата H20 - три кръгчета
Мисли по този начин и нямаш проблеми.
SQL не е език за програмиране
salle.online.bg/sig
Релационтите Бази Данни дефинират Таблиците като множества от редове.
В случая от едното множествн - на градовете ти трябват две подмножества и затова за момент си го представяш като две множества
т.е. Градовете се представят като Градове за пристигане и Градове за Тръгване ако искаш
И ако се го нарисунаш на хартия ще получиш нещо като формулата на водата H20 - три кръгчета
Мисли по този начин и нямаш проблеми.
SQL не е език за програмиране
salle.online.bg/sig
Re: назад към учебниците :)
xuxu:-) opredeleno sym po-dobyr v programiraneto otkolkoto v bazite danni, a pyk diskretnata matematika mnogo me kefi, no i tq mi e ot slabite tochki
Re: нe значи съм познал ...
това е ключов момент и повод за много обърквания.
Като се опиташ да си представиш Таблиците като Масиви (както повечето програмисти по инерциа правят) или Списъци и после се чудиш защо така и така.
Всичко е много просто - Теория на Множествата
* Таблиците са НЕПОДРЕДЕНИ Множества От Еднакви Елементи (редове).
* WHERE - вади Подмножество от дадено Множество
* Join - прави Обединение или Сечение на множества
в зависимост от условията.
Извод (адски важен между другото):
Понеже при ВСЯКА операция върху множества резултатът пак е множество (дори и да е Празно Множество) то
Резултатът от всяка SQL заявка е Таблица. Дори да е едно число това е таблица 1x1
Следващите изводи:
Тъй като таблиците са множества:
* забравяш понятието Цикъл.
* забравяш понятието Време — по точно подреба във времето.
При множествата такива животно няма нали?
Има "за всеки елемент от множеството" или "за дадено подмножество" да се направи това и това.
Само, че както почти навсякъде в математиката всичко се случва "изведнъж"
Можеш да кажеш, че искаш Резултатът от операцията да бъде "подредено множество" - превеждаме на SQL:
SELECT .... ORDER BY ...
Дреболийки обаче от тези дето обръщат колата
salle.online.bg/sig
Като се опиташ да си представиш Таблиците като Масиви (както повечето програмисти по инерциа правят) или Списъци и после се чудиш защо така и така.
Всичко е много просто - Теория на Множествата
* Таблиците са НЕПОДРЕДЕНИ Множества От Еднакви Елементи (редове).
* WHERE - вади Подмножество от дадено Множество
* Join - прави Обединение или Сечение на множества
в зависимост от условията.
Извод (адски важен между другото):
Понеже при ВСЯКА операция върху множества резултатът пак е множество (дори и да е Празно Множество) то
Резултатът от всяка SQL заявка е Таблица. Дори да е едно число това е таблица 1x1
Следващите изводи:
Тъй като таблиците са множества:
* забравяш понятието Цикъл.
* забравяш понятието Време — по точно подреба във времето.
При множествата такива животно няма нали?
Има "за всеки елемент от множеството" или "за дадено подмножество" да се направи това и това.
Само, че както почти навсякъде в математиката всичко се случва "изведнъж"
Можеш да кажеш, че искаш Резултатът от операцията да бъде "подредено множество" - превеждаме на SQL:
SELECT .... ORDER BY ...
Дреболийки обаче от тези дето обръщат колата
salle.online.bg/sig
Re: нe значи съм познал ...
Ami eto, tezi neshta za mnojestvata ne se bqh zamislql dosega za tqh, ama te i teq nashite profesori sa mnogo zle i to ne samo s bazite danni..., i pak nie trqbva da nasochvame karucata
Re: хммм
Да зема да се захвана с преподаване а?
Ама като съм прост инженер - никога няма да ме направят професор и това си е
salle.online.bg/sig
Ама като съм прост инженер - никога няма да ме направят професор и това си е
salle.online.bg/sig
Re: хммм
Ami mai nqma da stane, edva li shte imash tyrpenieto da govorish cqla godina za Paskal na pyrvokursnici koito boravqt samo s ME ili SE
Re: хммм
Още едно доказателство, че инженерите сме като дялани камъни
Хеле пък железарите
Хеле пък железарите