Autor Zpráva
CDG
Profil *
Dobrý den, mám databázi aut a potřebuji vypsat od daného vozu jeho další verze. Například budu mít základní model Škoda Octavia a budu chtít k ní vypsat Škoda Octavia RS, Škoda Octavia Scout, Škoda Octavia Ambition...
Mám tyto entity:
E auta: ID_auto, znacka, model, motor, vykon
E verze: ID_zaklad, ID_auto

data:
auta(1, Škoda, Octavia, 1.4TSI, 66)
auta(2, Škoda, Octavia RS, 2.0TDI, 90)
auta(3, Škoda, Octavia Scout, 1.6TDI, 80)

verze(1, 2)
verze(1, 3)

Když budu na webu mít otevřenou Škoda Octavia (ID = 1), tedy základní model, tak chci aby tam byl výpis dalších verzí tohoto vozu (ID = 2, 3) a to stejné i pro podverze - například budu na kartě vozu s ID = 2, tak chci aby tam byly zobrazeny i ty s ID = 1, 3
Půjde to udělat jedním dotazem? Děkuji za radu
Xethilos
Profil
V kategorii pro škodu

SELECT * FROM auta WHERE znacka = 'Škoda'

Aby se nevypsal duplicitní záznám

SELECT * FROM auta WHERE znacka = 'Škoda' && id_auto != 1

Edit: Úprava model na znacka
CDG
Profil *
Díky za radu. Ale asi by bylo lepší vypisovat podle ID a propojovat ty dvě tabulky. může se právě stát, že se budou lišit modelem a stejně k sobě budou patřit. šlo by to?
Xethilos
Profil
Aha moje chyba je to (Přepsal jsem se):
SELECT * FROM auta WHERE znacka = 'Škoda'

SELECT * FROM auta AS a LEFT JOIN verze AS v ON v.id_auto = a.id_auto WHERE a.znacka = 'Škoda'

Značkou by se to lišit nemělo. Jestli to chceš podle id, tak změna návrhu databáze.
CDG
Profil *
Jak by měla ta změna databáze vypadat?
Xethilos
Profil
car_id (PRIMARY, AUTO_INC), car_name

Př.

car(1, 'Škoda');
car(2, 'Opel');

model_id (PRIMARY, AUTO_INC), car_id (FOREIGN), model_name

Př.

model(1, 1, 'Octavia');
model(2, 1, 'Scout');
model(3, 2, 'Astra');

version_id (PRIMARY, AUTO_INC), model_id (FOREIGN), version_number

Př.
version(1, 1, 1);
version(1, 1, 5);




Dotaz pro všechny modely aut pro škodovku

SELECT * FROM model WHERE car_id = 1
CDG
Profil *
No to nebude možné, ta databáze už je funkční, zákazník přišel s touhle změnou až ted. nepůjde to nějak vyřešit s tím mým řešením? potřebuji nějak prostě sdružit podobné vozy, tak abych je mohl na kartě vozu vypsat...
abc
Profil
CDG:
Pokud znáš id_zaklad, tak např. takto:
SELECT * FROM auta WHERE id_auto IN (SELECT id_auto FROM verze WHERE id_zaklad = 1)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: