Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL] Zapytanie do bazy
Forum PHP.pl > Forum > Bazy danych > MySQL
CyanAppl
Cześć,
Proszę o pomoc w rozwiązaniu następującego problemu:
Mam tabelę Producent o następującej strukturze:

nazwa|typ
np. A|Samochód
A|Rower
B|Telewizor
C|Rower
C|Samochód
C|Telewizor
E|Samochód
E|Samochód
E|Rower

Jak spośród takiego zestawu danych, wybrać tylko tych producentów, którzy produkują samochody i rowery tj tutaj A i E, schemat tabeli jest w uproszczeniu kolejne kolumny zawierają inne typy danych. Proszę o nie pisanie, że projekt tabeli jest zły i kolumna typ powinna zawierać id do innej tabeli.

Uczę się dopiero SQL i proszę o wyrozumiałość.

Ja wpadłem na coś takiego:
SELECT nawa
FROM Producent
WHERE typ IN('Samochód','Rower')
ale takie zapytanie jest błędne, ponieważwyświetla mi też producenta C.
wookieb
To zapytaj o A i E a nie o Samochód i Rower o.0
CyanAppl
Nie moge, bo całe zadanie jest bardziej skomplikowane, to tylko jego ostatni fragment, z którym mam problem, chodzi o to, że nie mogę zapytać tylko o A i E, bo taki jest wynik, który ma wynikać z innych założeń.
wookieb
Są 3 opcje
1) masz złe dane w tabeli
2) nie zrozumiałeś zadania
3) niedostatecznie jasno wyjaśniłeś o co Ci jednak chodzi

Skoro widzisz, że zadajesz prawidłowe zapytanie (bo tak rzeczywiście jest, tylko oczekiwania inne) a wyniki Ci się nie zgadzają to powiedz, która z powyższych opcji Ci pasuje.
CyanAppl
Tak racja opcja numer 3
to jest ogolnie zadanie ze stronki http://sql-ex.ru
Jest tam napisane:
Exercise: 25
Find the printer makers which also produce PCs with the lowest RAM and the highest-speed processor among PCs with the lowest RAM. Result set: maker.
To co pogrubione to kwestia mojego zapytania/problemu
a tabela maker wyglada tak:
maker model type
A 1232 PC
A 1233 PC
A 1276 Printer
A 1298 Laptop
A 1401 Printer
A 1408 Printer
A 1752 Laptop
B 1121 PC
B 1750 Laptop
C 1321 Laptop
D 1288 Printer
D 1433 Printer
E 1260 PC
E 1434 Printer
E 2112 PC
E 2113 PC

Moje zapytanie wyglada tak:
Select maker
From Product pr
Where pr.model In (Select pct.model
From
(
Select model,Max(speed) as mx
From pc
Where ram=(Select Min(ram) From pc)
Group By model
) as pct
)

i na pierwszej bazie daje poprawny wynik, ale na drugiej troche zly tj o 3 rekordy za duzo
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.