Dobry kurs MySQL/SQL

0

Poszukuje kursu MySQL/SQl z prawdziwego zdarzenia, a mianowicie chodzi mi o taki kurs, który by wyjaśniał sposób uzycia np: LEFT JOIN itp...

Pozdrawiam

0

Może trochę nie na temat, ale osobiście nie lubę tych JOINów używać :]. Mało intuicyjne dla mnie to jest. Radzę sobie z łączeniem tabel przez odpowiedni warunek WHERE.

0

dla angel2953:

Jak znasz dobrze angielski to polecam edytor do baz:
EMS w tym przypadku "EMS MySQL Manager" jest tam taki fajny maly pliczek
"MySQL Reference" (mysql.chm)
W nim jest WSZYSTKO :) czego nie zapragniesz tam jest. Jedna z leprzych kompediow wiedzy z jakim sie spotkalem

BTW:

Adam.Pilorz napisał(a)

Może trochę nie na temat, ale osobiście nie lubę tych JOINów używać :]. Mało intuicyjne dla mnie to jest. Radzę sobie z łączeniem tabel przez odpowiedni warunek WHERE.

A zastanawiales sie kiedys jak dziala JOIN a jak zwykly warunek WHERE ??
JOIN operuje na tablicach ktore pasuja do warunku, tzn jak jakis rekord nie pasuje do wyrazenia, to w nastepnych warunkach nie jest brany pod uwage.
WHERE dzila na zasadzie iliczynu kartezjanskiego.

Np.: masz 3 tabele:

A:             B:
id_a | nazwa     id | id_a | nazwaa
-----+------     ---+------+-------
  1  | naz1       1 |   1  | naaz1
  2  | naz2       2 |   1  | naaz2
  3  | naz3       3 |   2  | naaz3

i zrobisz:
SELECT A.*, B.* FROM A, B WHERE A.id_a = B.id_a AND B.id = 3
to baza zrobi tak:

  • najpierw iloczyn kartezjanski AxB
    id_a | nazwa | id | id_a(2) | nazwaa
    -----+-------+----+---------+------
    1  | naz1  |  1 |      1  | naaz1
    1  | naz1  |  2 |      1  | naaz2
    1  | naz1  |  3 |      2  | naaz3
    2  | naz2  |  1 |      1  | naaz1
    2  | naz2  |  2 |      1  | naaz2
    2  | naz2  |  3 |      2  | naaz3
    3  | naz3  |  1 |      1  | naaz1
    3  | naz3  |  2 |      1  | naaz2
    3  | naz3  |  3 |      2  | naaz3
  • teraz to co pasuje do pierwszego waruknu:
    id_a | nazwa | id | id_a(2) | nazwaa
    -----+-------+----+---------+------
    1  | naz1  |  1 |      1  | naaz1
    1  | naz1  |  2 |      1  | naaz2
    2  | naz2  |  3 |      2  | naaz3
  • teraz do 2:
    id_a | nazwa | id | id_a(2) | nazwaa
    -----+-------+----+---------+------
    2  | naz2  |  3 |      2  | naaz3

Jak widac pierwszy krok jest dosc niepokojacy, jak mamy przeleciec przez 3 lub 4 tabele, a w kazdej jest min 5000 rekordow :D

INNER JOIN:
SELECT A.*, B.* FROM A INNER JOIN B on A.id_a = B.id_a WHERE B.id = 3

  • wezmie wszystkie rekordy z A:

    id_a | nazwa
    -----+------
    1  | naz1
    2  | naz2
    3  | naz3
  • teraz dolozy z tabeli B TYLKO to co pasuje do warunku:

    id_a | nazwa | id | id_a(2) | nazwaa
    -----+-------+----+---------+------
    1  | naz1  |  1 |      1  | naaz1
    1  | naz1  |  2 |      1  | naaz2
    2  | naz2  |  3 |      2  | naaz3
  • wybiera iloczynem kartezjanskim to co jest w warunku WHERE:

    id_a | nazwa | id | id_a(2) | nazwaa
    -----+-------+----+---------+------
    2  | naz2  |  3 |      2  | naaz3

Jak widac w tym przypadu jest troche oszczednosc procka :D
Ale to wszystko zalezy od jezyka i wersji bazy, to co przedstawilem, to POWINNO tak dzialac, a jak dziala na konkretnej bazie, to tylko ci co pisali ta baze wiedza :D

0

No... Może masz rację :]. Ale jak na razie nie miałem prawie do czynienia z tak rozbudowanymi bazami :]. Jak kiedyś pisałem coś na dużej bazie danych, to tutaj się pytałem jak to zroibć, żeby było dobrze i mam na JOINie :]. Może i warto się poduczyć :P

0
Adam.Pilorz napisał(a)

Może i warto się poduczyć :P

Na pewno :P ( dobrej wiedzy nigdy za duzo )
Sam czesto uzywam tylko WHERE'ow i unikam JOIN'ow jak ognia :d ale przy kolosach na jakich pracuje, JOINy to czasem zbawienie :)

0

Desperat masz u mnie [browar]
THX o to mi chodziło :]

0

Ja mowiac szczerze zawsze używam joinów, niegdy nie używalem zapisu proponowanego przez Adama, joiny sa bardzo intuincyjne jak dla mnie, kwestia przyzwyczajenia

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0