Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wynik z zapytaniem do bazy mysql nie adekwatny do rzeczywistości
Forum PHP.pl > Forum > Bazy danych > MySQL
konrado21
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ł..
alegorn
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.
konrado21
tak mam wiecej niz jeden sklep o takiej nazwie.można sobie z tym jakoś poradzić?
alegorn
można.

posluguj sie unikatami.

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

j.
konrado21
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?
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.