Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z systemem komentarzy
Forum PHP.pl > Forum > PHP
Mayka
Witam, mam taki problem, bo tworze system komentarzy do sprzedarzy/kupna produktu i może wy mi coś poradzicie bo od 3 dni nie moge sobie z tym poradzić....
Ma tabele produkty i w niej:

ID|USER_ID|name|who_buy|sold|

Id - id produktu
user_id to wiadomo
name nazwa produktu
who_buy - kto kupił produkt
sold - czy sprzedany czy nie ('tak' - 'nie')

i drugą tabele:

user_id
author_id
produkt_id
komentarz

I teraz zrobiłem sobie zapytanie:
  1. SELECT id,name,who_buy,user_id FROM products WHERE (user_id = '4' AND sold = 'tak' ) OR (who_buy = '4' AND sold = 'tak' )

Co wyswietla mi wszystkie produkty które sa kupione i sprzedane, ale jak teraz w tym zapytaniu sprawdzić czy do tego produktu już nie został wystawiony komentarz ?
bo wykombinowałem sobie cos takiego:
  1. SELECT id,name,who_buy,user_id FROM products WHERE (user_id = '4' AND sold = 'tak' ) OR (who_buy = '4' AND sold = 'tak' ) AND id NOT IN (SELECT product_id FROM reviews WHERE author_id = '4')

Ale jak autor_id wystawi 2gi komentarz to zapytanie sie sypie i wywala 'Subquery returns more than 1 row'
Macie jakiś pomysł jak to zrobić żeby było ok ?
mmmmmmm
Coś kręcisz. To zapytanie nie może ci takiego błędu zwracać. Poza tym brak ci nawiasu przy warunkach OR/AND
  1. SELECT id,name,who_buy,user_id FROM products WHERE 4 IN (user_id,who_buy) AND sold = 'tak' AND id NOT IN (SELECT product_id FROM reviews WHERE author_id = '4')

Pewnie to podzapytanie użyłeś w SELECT - wtedy może taki błąd wywalić.
A jeśli chcesz sprawdzić, czy istnieje, to użyj czegoś, co ci zwróci jedną wartość - albo funkcji agregujących, albo EXISTS
Mayka
Zaraz sprawdze te nawiasy.. Bo teraz zapytanie zaczeło zwracać to co powinno.. No poprostu idzie sie wk... Kolejna pierdoła nad która spędzam 3 dni a wam zajmuje to 10min..
mmmmmmm
Nie wiem, czy zauważyłeś (-łaś), ale ja trochę zmieniłem zapytanie... uzyłem IN - pozbyłem się OR
Mayka
Zauważyłeś wink.gif
Działa... Kolejny raz pomogłeś (-łaś) wink.gif

Dobra a jak teraz rozgraniczyć czy jest to sprzedający czy kupujący ? Można za pomocą zapytania jakoś ?
mmmmmmm
  1. SELECT id,name,who_buy,user_id, user_id=4 FROM products WHERE 4 IN (user_id,who_buy) AND sold = 'tak' AND id NOT IN (SELECT product_id FROM reviews WHERE author_id = '4')
Mayka
Cytat(mmmmmmm @ 11.07.2012, 10:56:02 ) *
  1. SELECT id,name,who_buy,user_id, user_id=4 FROM products WHERE 4 IN (user_id,who_buy) AND sold = 'tak' AND id NOT IN (SELECT product_id FROM reviews WHERE author_id = '4')

Działa dzieki piękne wink.gif

dopisałem sobie nawet ' user_id=4 AS kto ' żeby nie było tak bezimiennie i nawet działa.
Jeszcze raz dzieki piękne wink.gif
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.