Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyniki 2 zapytań razem
Forum PHP.pl > Forum > Bazy danych > MySQL
Niph
Mam problem z wyświetleniem wyników 2 odrębnych zapytań w jednej tabeli.

Jedno zapytanie, duże i ważniejsze

  1. $query="SELECT SUM(orderproduct.qty), orderproduct.pricenetto, orderproduct.vat, orderproduct.productid, orderproduct.price, orderproduct.name, product.buyprice, product.stock, product.producerid, producertranslation.seo
  2. FROM orderproduct
  3. INNER JOIN product ON orderproduct.productid = product.idproduct
  4. LEFT JOIN producertranslation ON product.producerid = producertranslation.producerid
  5. WHERE orderproduct.name LIKE '%$search%'
  6. AND CASE WHEN '$producent' >= 1 THEN product.producerid = '$producent' ELSE 1=1 END
  7. AND orderproduct.adddate BETWEEN '$date1' AND '$date2'
  8. GROUP BY orderproduct.productid, orderproduct.price
  9. ORDER BY $sort ";
  10.  
  11. $result=mysql_query($query);



I drugie zapytanie, które chciałbym "podpiąć" pod to pierwsze :

  1. $query="SELECT product.idproduct, SUM(productattributeset.stock)
  2. FROM product
  3. LEFT JOIN productattributeset ON productattributeset.productid = product.idproduct";
  4.  
  5. $result_wstock=mysql_query($query);


Nie mogę połaczyć tych zapytań, wychodzą mi cuda ponieważ mam kolumnę 'stock' w 2 tabelach. Więc wymyśliłem, że zrobię 2 osobne, i scalę wyniki.

Mam komendę, która generuje wyniki dużego zapytania
  1. while($row = mysql_fetch_array($result)){
  2. [...]
  3. echo $row['productid'];
  4. [...]
  5. }

(oczywiście uproszczone).

I teraz chciałbym, żeby w tej pętli while wpisać komendę, która z wyników małego zapytania ściągnie wartość SUM(productattributeset.stock) dla danego $row['productid']
jacobson
mozesz zrobic wywolywanie zapytan w petli podstawiajac jedynie productid, jednak mozesz wtedy nabic bardzo duzo zapytan. Moze sprobuj UNION ?
Pyton_000
A jak podstawisz SUM(productattributeset.stock) as sum_stock w SELECT i dodasz tego LEFT JOIN do tych wyżej to co? Powinno to zadziałać.
Czyli:
  1. $query="SELECT SUM(orderproduct.qty), orderproduct.pricenetto, orderproduct.vat, orderproduct.productid, orderproduct.price, orderproduct.name, product.buyprice, product.stock, product.producerid, producertranslation.seo, SUM(productattributeset.stock) as sum_stock
  2. FROM orderproduct
  3. INNER JOIN product ON orderproduct.productid = product.idproduct
  4. LEFT JOIN producertranslation ON product.producerid = producertranslation.producerid
  5. LEFT JOIN productattributeset ON productattributeset.productid = product.idproduct
  6. WHERE orderproduct.name LIKE '%$search%'
  7. AND CASE WHEN '$producent' >= 1 THEN product.producerid = '$producent' ELSE 1=1 END
  8. AND orderproduct.adddate BETWEEN '$date1' AND '$date2'
  9. GROUP BY orderproduct.productid, orderproduct.price
  10. ORDER BY $sort ";
  11.  
  12. $result=mysql_query($query);
Niph
Zapytanie w pętli odpada, pętla wykomuje sie nawet tysiąc razy.

O UNION poszukam, bo nie wiem co to biggrin.gif

dołaczenie przez AS daje taki sam efekt jak bez niego, niestety, nie bardzo rozumiem dlaczego. Może przez grupowanie cos sie chrzani?
irekk
Zamiast bawić się w unię która tutaj pasuje słabo i wydajnościowo jest słaba, poczytaj lepiej o tabelach wyprowadzonych (najlepiej szukaj frazy "derived tables").
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.