Ho diversi tavoli che vengono uniti per formare una tabella con colonneEsiste una tecnica SQL per ordinare facendo corrispondere più criteri?
designID
garmentID
colorID
sizeID
imageID
Ho una funzione che assomiglia a questo [variabili tra parentesi quadre sono opzionali]:
getProductImages($designID, [$garmentID], [$colorID], [$sizeID]);
lo voglio per restituire tutti imageIDs che corrispondono a $ designID nel seguente ordine:
- righe che corrispondono a $ garmentID, $ ColorID, e $ sizeID prima
- righe che corrispondono $ garmentID e $ ColorID prossimi
- righe che corrispondono ad appena $ garmentID prossimi
- righe che corrispondono nessuno (solo $ designID) ultimo
ho potuto farlo abbastanza facilmente semplicemente caricando tutto le righe che corrispondono a $ designID e poi le ordinano in PHP, ma la mia comprensione è che generalmente è più veloce fare l'ordinamento in MySQL quando possibile. Ci saranno circa 20 righe corrispondenti a un determinato ID $.
Quindi la mia domanda è duplice: vale la pena fare l'ordinamento in una dichiarazione SQL? Se lo faccio, qual è l'approccio migliore da prendere?
Sarei anche molto interessato a sapere se esiste un nome per questo tipo di ordinamento.
Un disclaimer importante su questa tecnica è che le colonne non corrispondenti non verranno ordinate; questo può o non può essere un problema per questo caso d'uso. – Stobor
@Stobor: non credo di aver capito. Puoi fare un esempio? ... Nota anche che penso che l'OP voglia solo una colonna nel set di risultati (una colonna 'imageId'). –
Questo è esattamente quello che stavo cercando, e considerevolmente più elegante di quanto immaginassi sarebbe. – Robert