 |
Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Comunitatea PHP Romania
|
| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
Birkoff
Data înscrierii: 18/Mar/2004
Mesaje: 2287
Locație: Bucuresti
|
| Trimis: Sâm Dec 11, 2004 10:01 pm Titlul subiectului: Interogare sql in tabele multiple |
|
|
Salut
M-am lovit de o problema si nu stiu daca se poate face...
Daca am sa zicem intr-o baza de date 2-3 tabele numite tabel1, tabel2, tabel3 si vreau sa execut o singura interogare in diferite campuri din fiecare tabel se poate face asta printr-un singur query? Daca da, vreau si eu un exemplu de cod ca am incercat mai multe variante da nu merg...
Ceva de genul
an style="color: #000000"><?php SELECT * FROM tabel1 AND SELECT * FROM tabel2; |
|
| Sus |
|
arond
Data înscrierii: 11/Mar/2004
Mesaje: 580
Locație: 127.0.0.1
|
| Trimis: Dum Dec 12, 2004 12:44 am Titlul subiectului: |
|
|
Depinde de ce anume vrei sa faci. La modul general, un SELECT pe mai multe table se numeste JOIN.
De exemplu:
SELECT * FROM table1, table2, table3;
...dar asta iti va aduce toate combinatiile posibile de inregistrari din cele trei tabele (produs cartezian se numeste :) ). Cu alte cuvinte, daca table1 are 2 inregistrari, table2 are 3 inregistrari si table3 are 4 inregistrari... rezultatul va avea 2*3*4 inregistrari, toate combinatiile posibile intre inregistrarile celor 3 tabele.
Daca vrei sa limitezi query-ul numai la anumite combinatii de inregistrari, poti folosi conditii, de genul:
SELECT * FROM table1, table2 WHERE table2.id=table1.id;
...query care iti va intoarce numai combinatiile intre inregistrari care satisfac conditia.
La modul explicit, query-ul de mai sus se poate scrie ca:
SELECT * FROM table1 INNER JOIN table2 ON table2.id=table1.id;
Mai departe cauta pe net, s-au scris carti intregi despre join-uri si este partea care face din bazele de date relationale mai mult decat un container performant de date. Cuvinte cheie: SQL, JOIN...
Numa' bune. |
|
| Sus |
|
Birkoff
Data înscrierii: 18/Mar/2004
Mesaje: 2287
Locație: Bucuresti
|
| Trimis: Dum Dec 12, 2004 2:09 am Titlul subiectului: |
|
|
| Da, multumesc, de JOIN nu auzisem pana acum pentru ca nu mi-a trebuit asa ceva pana acum, da o sa studiez ce ai scris tu si caut eu mai multe detalii ca acum stiu ce trebuie sa caut... |
|
| Sus |
|
ExcalIbvr
Data înscrierii: 02/Mai/2004
Mesaje: 1107
Locație: Oradea
|
| Trimis: Dum Dec 12, 2004 8:24 am Titlul subiectului: |
|
|
Se poate chiar si mai simplu, dar cum zicea si arond, depinde de ce anume vrei sa faci.
an style="color: #000000"><?php SELECT table1.camp1, table1.camp2, table2.camp1, table2.camp2, table2.camp3 FROM table1, table2
Atunci cand ai o relationare one-to-many (de exemplu), instructiune cheie in interogare este GROUP BY. |
|
| Sus |
|
mihnea sim
Data înscrierii: 20/Aug/2004
Mesaje: 149
Locație: Alexandria
|
| Trimis: Dum Dec 12, 2004 10:32 am Titlul subiectului: |
|
|
ca o nota:
-daca nu ma insel se poate realiza ceva si cu UNION. Merita si asta studiat.. |
|
| Sus |
|
Radical
Data înscrierii: 16/Feb/2004
Mesaje: 327
Locație: Bucuresti
|
| Trimis: Lun Dec 13, 2004 1:43 pm Titlul subiectului: |
|
|
mihnea sim a scris: ca o nota:
-daca nu ma insel se poate realiza ceva si cu UNION. Merita si asta studiat..
Cred ca UNION este cel mai aproape de ce vrea el.
UNION se poate face pe 2 tabele pe coloane de acelasi tip... numele coloanelor din primul tabel vor da numele coloanelor din rezultat...
Tabele pot diferi... dar in acest caz trebuie selectate numai anumite coloane...
Multa bafta... tot inainte... si apropo... in MySQL 4.1.7 exista si sub-query-uri... merita incercat... scuteste un JOIN ... poate chiar 2 ! |
|
| Sus |
|
PHPRomania Bot
Bot Member
Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google |
| Trimis: Mie Dec 26, 2007 7:01 pm Titlul subiectului: Ad |
|
|
|
|
|
| Sus |
|
| |
|