 |
Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Comunitatea PHP Romania
|
| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
xtremecris
Data înscrierii: 13/Feb/2004
Mesaje: 32
Locație: Bucuresti, Regie
|
| Trimis: Vin Sep 24, 2004 11:20 am Titlul subiectului: select in 2 baze de date |
|
|
Cum pot sa dau un select care sa imi returneze rezultate din 2 baze de date in urmatorul fel:
sa imi returneze rezultatele ori din prima baza ori din a doua reunite dar field-urile sa fie si ele reunite.
Mai concret:
baza 'A' are fieldurile: id, pret, nume
baza 'B' are fieldurile: id, reputatie, nume
rezultatele select-ului sa aiba: id, pret, reputatie, nume iar cand se da rezultate din 'B' pret-ul poate fi orice ca nu este important iar id reputatie si nume sa fie cele din B; daca se da rezultate din A sa aiba id, pret, nume din A iar reputatie poate fi orice, uzual 0. |
|
| Sus |
|
Radical
Data înscrierii: 16/Feb/2004
Mesaje: 327
Locație: Bucuresti
|
| Trimis: Vin Sep 24, 2004 11:54 am Titlul subiectului: databasename.tablename.fieldname |
|
|
In MySQL functioneaza databasename.tablename.fieldname
Acuma cum le pui si sau folosesti e ceva mai complicat.
Ca sa-mi fa o idee de ansamblu da-mi si mie un DESCRIBE TABLE:
Cod: mysql> describe link_dir;
+--------+---------------------+------+-----+----------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------------------+------+-----+----------+----------------+
| id | bigint(20) unsigned | | PRI | NULL | auto_increment |
| parent | bigint(20) unsigned | | MUL | 0 | |
| level | bigint(20) unsigned | YES | | NULL | |
| frunze | bigint(19) unsigned | | | 0 | |
| categ | varchar(255) | YES | MUL | NULL | |
| ordine | int(10) unsigned | | MUL | 0 | |
+--------+---------------------+------+-----+----------+-----+
7 rows in set (0.05 sec) |
|
| Sus |
|
xtremecris
Data înscrierii: 13/Feb/2004
Mesaje: 32
Locație: Bucuresti, Regie
|
| Trimis: Vin Sep 24, 2004 12:05 pm Titlul subiectului: |
|
|
De fapt m-am exprimat gresit, selectul trebuie sa returneze rezultate din 2 TABELE(nu baze de date), care au field-uri comune(adica au acelasi nume si aceeasi semnificatie) si field-uri specifice tabelei respective.
baza 'A' are fieldurile: id, pret, nume
baza 'B' are fieldurile: id, reputatie, nume
Ca un exemplu:
Tabela A:
--------------------------------------------
ID | PRET | NUME
------------------------------------------
1 | 1000 | cablu de date
2 | 2500 | cablu de date de calitate superioara
....
Tabela B:
Tabela A:
--------------------------------------------
ID | REPUTATIE | NUME
------------------------------------------
3 | 10 | imprimanta Lexmark
4 | 4 | imprimanta Canon
Rezultatul select-ului ar trebuii sa fie:
------------------------------------------------------------------------
ID | PRET | REPUTATIE | NUME
--------------------------------------------------------------------
1 | 1000 | 0 | cablu de date
2 | 2500 | 0 | cablu de date de calitate superioara
3 | 0 | 10 | imprimanta Lexmark
4 | 0 | 4 | imprimanta Canon
Sigur nu exista acelasi id si in tabela A si in tabela B, d-asta la rezultatele select-ului imi da 1, 2, 3, 4 si nici un id de 2 ori. |
|
| Sus |
|
Radical
Data înscrierii: 16/Feb/2004
Mesaje: 327
Locație: Bucuresti
|
| Trimis: Lun Sep 27, 2004 11:42 am Titlul subiectului: |
|
|
Acuma am inteles ce vrei tu.
UNION merge numai pe MySQL 4... acuma mai jos minor nu pot sa-ti zis... la mine pe 4.0.18 merge OK.
Ai asa:
(SELECT id, pret, "0" AS reputatie, nume FROM tabela_A)
UNION
(SELECT id, "0" AS pret, reputatie, nume FROM tabela_B)
ORDER BY id ASC |
|
| 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 |
|
| |
|