Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wynik z zapytaniem do bazy mysql nie adekwatny do rzeczywistości
konrado21
post 17.07.2012, 14:03:54
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 17.07.2012

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


Importuje dane do tabeli tymczasowej tmp mam 21 wierszy, potem chce je powrzucać do odpowiednich

tabel przy jednej mam problem
Przy zapytaniu

Kod
SELECT (SELECT idsklepu FROM sklep WHERE Nazwa=sklep),
(SELECT idproduktu FROM produkty WHERE Nazwa=tmp.Produkty), Ilosc, OdKiedy, DoKiedy
FROM tmp

otrzymuję
Cytat
#1242 - Subquery returns more than 1 row



przy zapytaniu

Kod
SELECT Sklep.idsklepu,Produkty.idproduktu,ilosc,Odkiedy,dokiedy
from tmp
join Sklep on Sklep.nazwa=tmp.sklep
join Produkty on produkty.nazwa=tmp.produkty


dublują mi się wyniki i wychodzi dziwny wynik wychodza 37 wierszy.. o co chodzi
natomiast przy zapytaniu

Kod
INSERT INTO sprzedaz(idsklepu, idproduktu, ilosc, OdKiedy, DoKiedy)
SELECT DISTINCT Sklep.nazwa,Produkty.idproduktu,ilosc,Odkiedy,dokiedy
from tmp
join Sklep on Sklep.nazwa=tmp.sklep
join Produkty on produkty.nazwa=tmp.produkty


wychodzą poprawnie dane ,ale chcialbym id sklepu... i niem wiem czemu muszę stosować DISTINCT w id

sklepu wstawia mi z automatu 0 jak wyciągnąć id?

Zauważyłem że nie zawsze jest poprawnie.Tabela sklep wyglada idsklepu,nazwa,idklienta
    1;;1
    2;;3
    3;;12

nawet jak zrobie takie zapytanie
Kod
SELECT sklep.idsklepu
from tmp
LEFT JOIN sklep ON
tmp.Sklep=sklep.nazwa

to pokazuje się dużo zapytań tak jakby każdy z każdym się łączył..
Go to the top of the page
+Quote Post
alegorn
post 17.07.2012, 14:17:55
Post #2





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

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


nie mam czasu analizowac ale wychodzi na to ze :

masz wiecej niz jeden produkt o takiej nazwie :SELECT idproduktu FROM produkty WHERE Nazwa=tmp.Produkty
lub
wiecej niz jeden sklep o takiej nazwieSELECT idsklepu FROM sklep WHERE Nazwa=sklep


j.
Go to the top of the page
+Quote Post
konrado21
post 17.07.2012, 14:20:04
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 17.07.2012

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


tak mam wiecej niz jeden sklep o takiej nazwie.można sobie z tym jakoś poradzić?
Go to the top of the page
+Quote Post
alegorn
post 17.07.2012, 15:02:28
Post #4





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

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


można.

posluguj sie unikatami.

nie wiem jak generujesz tabele tymczasowa, ale zamiast nazwy sklepu - podawaj jego id.

j.
Go to the top of the page
+Quote Post
konrado21
post 26.07.2012, 13:52:41
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 17.07.2012

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


importuje z csv do tabeli tmp potem
  1. INSERT INTO sklep(Nazwa, idklienta)
  2. SELECT DISTINCT Sklep, idklienta
  3. FROM tmp
  4. LEFT JOIN Klienci ON tmp.Klient = klienci.Nazwa
  5. WHERE Sklep NOT IN (SELECT Nazwa FROM sklep WHERE idklienta=klienci.idklienta)

natomiast do tabeli sprzedaz chcę wstawić
  1. INSERT INTO sprzedaz(idsklepu, idproduktu, ilosc, OdKiedy, DoKiedy)
  2. SELECT (SELECT idsklepu FROM sklep WHERE Nazwa=sklep),
  3. (SELECT idproduktu FROM produkty WHERE Nazwa=tmp.Produkty), Ilosc, OdKiedy, DoKiedy
  4. FROM tmp

tabela tmp wyglada
produkty,ilosc,sklep,klient,OdKiedy, DoKiedy

można prosić o rozwiązanie tego tematu? dodam jeszcze ze przy takim zapytaniu
  1. SELECT Sklep.nazwa,Produkty.nazwa,ilosc,Odkiedy,dokiedy
  2. FROM tmp
  3. JOIN Sklep ON Sklep.nazwa=tmp.sklep
  4. JOIN Produkty ON produkty.nazwa=tmp.produkty
  5. WHERE sklep.nazwa = (SELECT sklep FROM tmp)

otrzymuje błąd
Cytat
#1242 - Subquery returns more than 1 row

natomiast przy
  1. SELECT Sklep.nazwa,Produkty.nazwa,ilosc,Odkiedy,dokiedy
  2. FROM tmp
  3. JOIN Sklep ON Sklep.nazwa=tmp.sklep
  4. JOIN Produkty ON produkty.nazwa=tmp.produkty
  5. WHERE sklep.nazwa IN (SELECT sklep FROM tmp)

otrzymuje wynik zapytania, ale z błędna ilością wierszy....
Gdzie tkwi haczyk?

Ten post edytował konrado21 26.07.2012, 13:54:45
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 01:28