PDA

Zobacz pełną wersję : Zapytania do bazy



morphic
14-10-2013, 12:25
Właśnie staram się rozkminić kwestię zapytań do bazy w modelu MVC i za nie powiem co, z tego niewiele rozumiem.

Potrzebuję wstawić parę zapytań w stylu:

SELECT `pkt_fv`,`pkt_ilosc` FROM `#__fv_punkty` where knt_id=1union all
SELECT 'suma',sum(pkt_ilosc) FROM `#__fv_punkty` where knt_id=1

lub


SELECT * FROM `#__virtuemart_userinfos`
join kg2aj_fv_faktura on `NIP`=knt_nip

i za diabła mi to nie działa.

W dokumentacji znalazłem coś takiego:

public function join($type, $conditions){
if (is_null($this->_join)) {
$this->_join = array();
}
$this->_join[] = new JDatabaseQueryElement(strtoupper($type) . ' JOIN', $conditions);

return $this;
}

ale jest to dla mnie starokrasnoludzki, zwłaszcza ta linijka z JOINem. Ktoś mi to może po ludzku wytłumaczyć?

KES
14-10-2013, 19:24
Warto zacząć od tego w jaki sposób utworzyć zapytanie do bazy danych, pomoże Ci ten artykuł Selecting_data_using_JDatabase (http://docs.joomla.org/Selecting_data_using_JDatabase) oraz jest w nim bardzo dokładnie opisane jak wyciągać z bazy danych.

Jola
14-10-2013, 19:32
Witam,
chcesz coś "wybrać z bazy danych, ale nie jesteś w tym orłem - zacznij od phpMyAdmin. Popróbuj w okienku SQL - zobaczysz czy prawidłowo budujesz zapytania.
Jak tam zadziała - możesz startować do PHP. :)

morphic
15-10-2013, 08:29
@KES - dzięki, czytałem, moje zapytania próbowałem wcisnąć gdzieś w kod i nie chcą działać.

@Jola - a myślisz, że jak to zrobiłem? Zapytania podane przeze mnie powyżej bez problemu działają w phpMyAdminie. Tyle, że kompletnie się pogubiłem w tym, co oferuje Joomla w MVC. Gdyby to było w czystym PHP to nie zawracałbym nikomu niepotrzebnie głowy.

Jola
15-10-2013, 09:27
Wiesz "i za diabła mi to nie działa" nie jest jednoznaczne - bo co nie działa? :)
Ta funkcja na mój nos to bardzo proste dodanie do zapytania części z JOIN:

join kg2aj_fv_faktura on `NIP`=knt_nip

Dobrym zwyczjem jest oznaczanie symbolem tabeli, której dotyczy pole (jeśli tabele mają takie same nazwy pól, zapytanie bez oznaczeń się nie wykona,
Czyli (jesli dobrze przypisałam pola do tabel)



SELECT u.* FROM `#__virtuemart_userinfos` as u
INNER JOIN kg2aj_fv_faktura as f on u.NIP = f.knt_nip
A skorzystanie z funkcji:

join('INNER','kg2aj_fv_faktura as f on u.NIP = f.knt_nip');

jafeth
23-10-2013, 02:20
Funkcja Join() ma dwa parametry. Jeden to rodzaj złączenia czyli: left, right, inner, outer itd. Drugi parametr to warunek według którego mają być tworzene złączenia.
Do zrozumienia złączeń polecam poniższy obrazek, jak dla mnie lepszy niż większość tutoriali i opisów na ten temat:
http://i.imgur.com/lrL56IT.jpg


ale jest to dla mnie starokrasnoludzki, zwłaszcza ta linijka z JOINem. Ktoś mi to może po ludzku wytłumaczyć?