Visualizzazione dei risultati da 1 a 2 su 2

Discussione: [mysql] problema query

  1. #1

    [mysql] problema query

    buon sabato a tutti,
    http://s11.postimg.org/yxfifjqn7/PROBLEMA.jpg
    ho un problema: in un DB, come da foto allegata, ho 2 tabelle ARTICOLI e FOTO e vorrei generare una terza ARTICOLI+FOTO, (ogni articolo può avere al massimo 4 foto). come posso fare?

    mi spiego meglio: le tabelle ARTICOLI E FOTO esistono già (sono due tabelle usate da un cms fatto ad hoc pre-esistente, e ci sono già 5000 articoli con relative millemila foto).

    adesso dovrei migrare a WORDPRESS e la cosa + rapida c
    he mi è passata per la testa è creare un'unica tabella come quella ARTICOLI + FOTO popolarla esattamente in qualche modo, fare l'esportazione in .csv e proseguire con l'import da wordpress.

    grazie

    Gianni
    Immagini allegate Immagini allegate

  2. #2
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Premesso che vedo sempre con diffidenza questi tentativi di query "denormalizzate"
    che potrebbero essere fatte piu agevolmente a lato applicazione.


    comunque a livello di principio se le foto per ogni articolo
    non sono assolutamente mai piu di 4 puoi fare cosi:


    Costruisci una prima Vista sulla tabella "FOTO"
    che ti numera da 1 a n i record per ogni "id_articolo"
    la Vista chiamala "QFOT"
    codice:
    SELECT 
    F1.ID_FOTO, 
    F1.id_articolo, 
    F1.descrizione_foto, 
    F1.link, 
       (
       SELECT 
       Count(F2.ID_FOTO) 
       FROM FOTO AS F2 
       WHERE 
       (
       (F2.id_Articolo=F1.id_Articolo) 
       AND 
       (F2.ID_FOTO<=F1.ID_FOTO)
       )
       ) AS Conx
    FROM 
    FOTO AS F1

    Costruisci una seconda Vista su "ARTICOLI" e "QFOT"
    codice:
    SELECT 
    ARTICOLI.ID_ARTICOLO, 
    ARTICOLI.nome, 
    ARTICOLI.descrizione_articolo, 
    Max(IIf(QFOT.Conx=1,QFOT.link)) AS Link1, 
    Max(IIf(QFOT.Conx=1,QFOT.descrizione_foto)) AS Desc1, 
    Max(IIf(QFOT.Conx=2,QFOT.link)) AS Link2, 
    Max(IIf(QFOT.Conx=2,QFOT.descrizione_foto)) AS Desc2, 
    Max(IIf(QFOT.Conx=3,QFOT.link)) AS Link3, 
    Max(IIf(QFOT.Conx=3,QFOT.descrizione_foto)) AS Desc3, 
    Max(IIf(QFOT.Conx=4,QFOT.link)) AS Link4, 
    Max(IIf(QFOT.Conx=4,QFOT.descrizione_foto)) AS Desc4
    FROM 
    ARTICOLI 
    LEFT JOIN 
    QFOT 
    ON 
    ARTICOLI.ID_ARTICOLO = QFOT.id_articolo
    GROUP BY 
    ARTICOLI.ID_ARTICOLO, 
    ARTICOLI.nome, 
    ARTICOLI.descrizione_articolo

    NB: Il codice proposto dovrai adeguarlo alla sintassi di MySql

    .
    Ultima modifica di nman; 26-10-2013 a 22:06

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.