Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Relacyjne zapytanie, 2 pola do 1 tabeli
piterek83
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 3.08.2012

Ostrzeżenie: (0%)
-----


Witam serdecznie,
zapewne sprawa wyda się błaha jednak mam z nią problem.
Mam w tabeli car_ads 2 pola: `country` i `country_register`, są one powiązane z polem `id` w tabeli countries.
Potrzebuję pobrać wymienione pola w postaci nazwy kraju z którym jest powiązany `id` w tych polach.


Table: car_ads

id | country | country_register |
------------------------------------
1 | 2 | 1 |

Table: countries

id | name |
------------------|
1 | Polska |
2 | Dania |

Mój kod:

  1. <?php
  2. $query = mysql_query('SELECT c.id, c.country, c.country_register
  3. FROM car_ads as c
  4. LEFT JOIN countries as cnt
  5. ON c.country = cnt.id AND c.country_register = cnt.id
  6. WHERE c.id = 1');
  7. $q = mysql_fetch_assoc($query);
  8. ?>

<div style="clear:both;float:left;width:500px;height:200px">
<?php print_r($q); ?>
<p>Kraj pochodzenia: <?php echo $q['country'] ?></p>
<p>Kraj rejestracji: <?php echo $q['country_register'] ?></p>
</div>

print_r($q) oraz paragrafy w divie mi zwracają:

Array ( [id] => 21 [country] => 2 [country_register] => 1 )

Kraj pochodzenia: 2 <- tu powinno być: Dania
Kraj rejestracji: 1 <- tu powinno być: Polska

Proszę o pomoc (IMG:style_emoticons/default/smile.gif)

Ten post edytował piterek83 3.08.2012, 23:18:12
Go to the top of the page
+Quote Post
trafas
post
Post #2





Grupa: Zarejestrowani
Postów: 87
Pomógł: 12
Dołączył: 31.05.2006

Ostrzeżenie: (0%)
-----


W twoim zapytaniu powinieneś joinować tabelę z krajami dwa razy.
Raz po polu country i drugi raz po polu country_register:



  1. SELECT c.id, c.country, c.country_register
  2. FROM car_ads AS c
  3. LEFT JOIN countries AS cnt
  4. ON c.country = cnt.id
  5. LEFT JOIN countries AS cnt_reg
  6. ON c.country_register = cnt_reg.id
  7. WHERE c.id = 1


A jak chcesz wyciągnąć nazwy kraju, to w selkcie wyciągasz:
  1. SELECT c.id, cnt.name, cnt_reg.name


Ten post edytował trafas 4.08.2012, 09:58:19
Go to the top of the page
+Quote Post
piterek83
post
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 3.08.2012

Ostrzeżenie: (0%)
-----


Dzięki! Nakierowałeś mnie. Pełne rozwiązanie problemu:

  1. <?php
  2. $query = mysql_query('SELECT c.id, c.country, c.country_register, cnt.name AS pochodzenie, cnt_reg.name AS zarejestrowany
  3. FROM car_ads AS c
  4. LEFT JOIN countries AS cnt
  5. ON c.country = cnt.id
  6. LEFT JOIN countries AS cnt_reg
  7. ON c.country_register = cnt_reg.id
  8. WHERE c.id = 1');
  9. $q = mysql_fetch_assoc($query);
  10. echo $q['pochodzenie']; //kraj pochodzenia
  11. echo $q['zarejestrowany']; //kraj aktualnej rejestracji
  12. ?>


Ten post edytował piterek83 4.08.2012, 10:00:55
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 20:27