Cum funcționează
a) Aici SELECT * e corect
„Afișați restaurantele" — fără să precizeze coloanele — înseamnă tot rândul. E singurul caz în care
SELECT * e răspunsul cerut, nu o scurtătură.
Diacriticele din enunț vs. datele din tabel
Enunțul scrie „Galați", cu ț. Dacă în tabel orașul e scris Galati, condiția
WHERE oras = 'Galați' întoarce zero rânduri — și nu dă nicio eroare. Comparația de șiruri e
caracter cu caracter, iar ț și t sunt caractere diferite.
Regula: condiția se scrie exact ca valoarea din tabel, nu ca în enunț. Dacă nu poți vedea datele,
varianta care merge în ambele cazuri:
WHERE oras LIKE 'Gala%'
Aceeași problemă apare la orice valoare cu diacritice: „Dramă" la
problema #149, „București" la
#146.
b) Filtrare după o coloană din tabelul lipit
Comenzile sunt în Comenzi, dar orașul e în Restaurante — deci joncțiune, apoi WHERE pe
r.oras. Observă că de data asta tabelul principal e Comenzi (se cer comenzile), iar Restaurante
e cel lipit. La INNER JOIN ordinea celor două tabele nu schimbă rezultatul, dar scrie-l primul pe
cel din care se cer datele — interogarea se citește mai ușor.
Enunțul cere data, iar coloana se numește data_comanda. Se afișează coloana reală; dacă vrei să
apară cu numele din cerință, AS data — atenție că în unele sisteme data e cuvânt rezervat.
Greșeli frecvente
'Galați' cu diacritice, când în tabel e Galati — zero rânduri, fără eroare. Cea mai
frecventă greșeală din toată categoria.
'galati' cu literă mică — în Oracle, tot zero rânduri.
- Filtrare pe
c.idr = 101 — merge, dar codul restaurantului nu apare în enunț; l-ai ghicit din
date.
SELECT * la cerința b) — s-au cerut trei coloane, iar * după o joncțiune afișează
toate coloanele din ambele tabele (12 coloane).
- Joncțiune uitată —
WHERE oras = 'Galati' direct pe Comenzi dă eroare: coloana nu există
acolo.