Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapytanie - jedna tabela + kilka rekorów z
Forum PHP.pl > Forum > Bazy danych > MySQL
Sierak
Posiadam dwie tabelki. Jedna z produktami a druga ze zdjęciami do produktów.

[products]
id, name, destiny, shotrDescription, description

[photo]
id, idParent, photo, minPhoto

produkty.id = photo.idParent - tak lacza sie obie te tabelki

Nie moge sobie poradzic z zadaniem zapytania ktore bedzie mi zwracac wszystkie produkty + zdjecie do tego. Probowalem cos takiego a także na joinach ale jakoś mi nie wychodzi. Szukałem też trochę na forum ale też nie za bardzo:

[sql:1:f985ebe214]SELECT p.id, p.name, p.destiny, p.shortDescription, ph.photo, ph.minPhoto
FROM products as p, photo as ph
WHERE p.id = ph.idParent[/sql:1:f985ebe214]
DeyV
[sql:1:2eb4102871]SELECT p.id, p.name, p.destiny, p.shortDescription, ph.photo, ph.minPhoto
FROM products p
LEFT JOIN photo ph ON ( p.id = ph.idParent )[/sql:1:2eb4102871]
Sierak
Hmm ... nie za bardzo mi działa, z tabelki products wyciąga a z photo już nie i nie wiem czy to mój błąd i mam coś źle w kodzie czy zapytanie nie tak. A jeszcze jak zadać to zapytanie żeby nawet jak nie znajdzie zadnego zdjęcia to jednak wyświetli dane z products. Obrazowo mówią jak nie będzie zdjęcia to wyświetli bez niego.
DeyV
włanie tak jest w przypadku wykorzstania LEFT JOIN.
Jeśli chcesz, by były tylko te rekordy któe wystepują w obu tabelach - używasz INNER JOIN
A co do błędów - nie wiem, co może być nie tak.
Jakiego typu masz błedy?
Sierak
Poprawiam się: zapytanie działą dobrze bo sprawdziłem a samym MySQL'u. Krzaczy mi się coś kod ale to już zaraz mam nadzieje dojde.
Thx smile.gif W razie czego jeszcze napisze.

Jesze jedno ... jak zakladajac mam 3 zdjecia dodane do danego produktu to chcialbym aby zapytanie za pierwszym znalezieniu zdjecia przeszlo dalej do szukania nastepnego. Nie wiem czy sie jasno wyrazilem ale chodzi o to zeby baz wzgledu na to ile jest zdjec dodanych do produktu wyswietlalo sie tylko jedno. Da sie tak?

A nie wyświetlna mi dlatego bo mając zapytanie:

[php:1:5d523e85d7]<?php
$query="SELECT p.id, p.name, p.destiny, p.shortDescription, ph.idParent, ph.photo, ph.minPhoto
FROM products p
LEFT JOIN photo ph ON ( p.id = ph.idParent )";
$qid = dbQuery($query);
include("templates/ofertaLista.php");
?>[/php:1:5d523e85d7]

Potem ofertaLista.php
[php:1:5d523e85d7]<?php
while($rec = dbFetchObject($qid))
{
include("templates/ofertaWiersz.php");
}
?>[/php:1:5d523e85d7]

I ofertaWiersz.php
[php:1:5d523e85d7]<?php
if($rec->photo != NULL)
{
$size = getimagesize("../photo/offerPhotos/".$rec->photo);
$szerokosc = $size[0] + 30;
$dlugosc = $size[1] + 40;

?><tr><td width=80>
<a href="java script:winOpen('../photo/offerPhotos/<?pv($rec->photo)?>', '<?pv($szerokosc)?>', '<?pv($dlugosc)?>'); "><img src='../photo/offerPhotos/<?pv($rec->minPhoto)?>' border=0></a><br></td><td><h1>
<?
}
else
{
?><tr><td width=80>
<img src='../photo/offerPhotos/pusty.jpg' border=0><br></td><td><h1>
<?
}
?>

<b><?pv($rec->name)?></b>&nbsp&nbsp<?pv($rec->destiny)?><br>
<?pv($rec->shortDescription)?><br>
<a href="java script:noweW=window.open('oferta_adm.php?action=one&id=<?pv($rec->id)?>', 'informacje', 'width=550,height=400,left=25,top=25,scrollbars=yes,status=yes, resizable=no'); void(0);">
[więcej]</a><a href="oferta_adm.php?action=upd&id=<?pv($rec->id)?>">&nbsp[edytuj]</a><a href="oferta_adm.php?action=del&id=<?pv($rec->id)?>">&nbsp[usuń]</a><a href="photo_adm.php?action=add&id=<?pv($rec->id)?>">&nbsp[photo]</a>
</td></tr>
?>[/php:1:5d523e85d7]

I nie widzi mi w $rec->photo jako tego co mi zapytanie zwróciło.
Dla jasności funkcja dbQuery, dbFetchArray to moje funkcje które odpowienio wysyłają zapytanie do bazy danych oraz grupują wyniki w tablicy asocjacyjnej
Sierak
Wszystko juz działa ale mam jeszcze pytanko czy istnieje taka fizyczna możliwość aby zapytanie

[sql:1:65edaaddbc]SELECT p.id, p.name, p.destiny, p.shortDescription, ph.photo, ph.minPhoto
FROM products p
LEFT JOIN photo ph ON ( p.id = ph.idParent )[/sql:1:65edaaddbc]

Zwracało tylko jedna fotke do każdego produktu pomimo tego, iż w bazie jest więcej?
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-2025 Invision Power Services, Inc.