Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dane z dwóch tabel + wyswietlanie
Forum PHP.pl > Forum > Bazy danych > MySQL
miki_ok
Czesc,
zawislem na niby banalnym zapytaniu :/
otoz mam dwie tabele: ogloszenia i kategorie

ogloszenia:

id | nazwa | kat |

kategorie:
id | nazwa |

Do pola "kat" w tabeli ogloszenia, chciałbym ładowac "id" kategorii.
i teraz: jak wyciągnąć i wyswietlić kategrię o id=1 gdy mam jedynkę w polu kat w tabeli "ogloszenia" ?

z gory dzieki za helpa,
pozdr,
m.
Sh4dow
jesli dobrze zrozumialem to wystarczy zwykly warunek
  1. SELECT o.*, k.nazwa AS nazwa_kategorii
  2. FROM ogloszenia AS o, kategorie AS k WHERE o.kat = k.id ORDER BY o.id

lub
  1. SELECT o.*, k.nazwa AS nazwa_kategorii
  2. FROM ogloszenia AS o LEFT JOIN kategorie AS k ON o.kat = k.id ORDER BY i.od
Rkingsmiley.png

P.S. ale dziwnie koloruje i łamie ten znacznik sql blink.gif
miki_ok
Tak mialem, 1 przyklad, tylko teraz chcialbym wyswietlic obok siebie id z tabeli kategorie i id z kategorii ogloszenia...

da siem ?

probowalem tak: '.$wiersz['kategorie.id'].' '.$wiersz['ogloszenia.id'].'

ale nie działa :/
Sh4dow
Nie tak nazwy masz takie jak nazwy pul, czyli bez kropek

  1. <?php
  2. echo $wiersz['kat'].' '.$wiersz['id'].' '.$wiersz['nazwa_kategorii'];
  3. ?>

z zapytania otrzymujesz taka tablice
id, nazwa, kat, nazwa_kategorii
pierwsze trzy pochodza z tablicy ogloszenia a ostatni pochodzi z tablicy kategorie i ma zmieniona nazwe na nazwa_kategorii

[Edit] dla wyjasnienia oba powyzsze zapytania SQL dadza taki sam wynik przy takich samych tablicach. Glowna tablica skad pobierane sa dane to tablica 'ogloszenia', dodatkowa kolumna jaka wyciagamy jest kolumna 'nazwa' z kolumny 'kategorie' ktorej zmienilismy nazwe na 'nazwa_kategorii' aby nie powstal konflikt z nazwa kolumny z tablicy 'ogloszenia'

Mam nadzieje ze wyjasnilem ci to wystarczajaco dokladnie Rkingsmiley.png
nospor
musisz uzyc aliasów dla id, bo dwa takie same pola w select ie moga byc:
  1. SELECT o.id oid, k.id kid, k.nazwa AS nazwa_kategorii
  2. FROM ogloszenia AS o, kategorie AS k WHERE o.kat = k.id ORDER BY o.id
no ipotem
$wiersz['kid'].' '.$wiersz['oid'].'
miki_ok
@nospor: dzieki, niby wszystko ok, a jednak zapytanie sie sypie :/

ułożyłem tak:
  1. SELECT o.id oid, k.id kid, k.nazwa AS nazwa_kategorii
  2. FROM ogloszenia AS o, kategorie AS k WHERE 1 AND o.id LIKE '$nr'

$nr to zmienna z url'a
(w tym przyp. ==3)

jako wynik wywala mi 4 rekordy a mam tylko jedno pole id wartosci 3 :/

?
nospor
Ale przecież te ID to jest typu int? Jesli nie to zrób to na int i wówczas:
  1. <?php
  2.  
  3. $sql = "SELECT o.id oid, k.id kid, k.nazwa AS nazwa_kategorii
  4. FROM ogloszenia
  5. AS o, kategorie AS k WHERE o.id = $nr";
  6.  
  7. ?>


a sorki, ale zjadles polaczenie:
  1. <?php
  2.  
  3. $sql = "SELECT o.id oid, k.id kid, k.nazwa AS nazwa_kategorii
  4. FROM ogloszenia
  5. AS o, kategorie AS k WHERE o.kat = k.id and o.id = $nr";
  6.  
  7. ?>
miki_ok
nospor,
nic z tego, tym razem wywala 5 rekordów :/ sad.gif

o, a w tabeli kategorie, mam 5 kategorii... questionmark.gifquestionmark.gif?



miki: wkleiłem, dokładnie jak napisałeś, to z tym połączeniem i coś sie dalej sypie ...
nospor: orajciu, ale co się sypie? jakies errory?
miki: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in...
phpmyadmin mowi, ze: #1054 - Unknown column 'o.kat' in 'where clause'
nospor
komunikat glosi ze tabeli ogloszenia nie ma pola 'kat'. Masz takie pole? Pokaz dokladnie to zapytanie co zrobiles po mojemu
miki_ok
hula, dzięki piękne :* winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.