Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyniki 2 zapytań razem
Niph
post
Post #1





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

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


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']

Ten post edytował Niph 1.11.2014, 23:27:24
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
jacobson
post
Post #2





Grupa: Zarejestrowani
Postów: 468
Pomógł: 36
Dołączył: 14.12.2010

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


mozesz zrobic wywolywanie zapytan w petli podstawiajac jedynie productid, jednak mozesz wtedy nabic bardzo duzo zapytan. Moze sprobuj UNION ?
Go to the top of the page
+Quote Post
Pyton_000
post
Post #3





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


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);
Go to the top of the page
+Quote Post
Niph
post
Post #4





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

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


Zapytanie w pętli odpada, pętla wykomuje sie nawet tysiąc razy.

O UNION poszukam, bo nie wiem co to (IMG:style_emoticons/default/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?
Go to the top of the page
+Quote Post
irekk
post
Post #5





Grupa: Zarejestrowani
Postów: 64
Pomógł: 10
Dołączył: 2.08.2012
Skąd: DW

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


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").
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 - 15:55