Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    12

    query sql complessa con Join

    Quesry MySql complessa con Join
    Salve ho un problema con la query seguente:

    "SELECT *, SUM(periodi2.prezzo) as risultato_prz FROM (alloggiare INNER JOIN periodi ON alloggiare.id = periodi.id_casa) INNER JOIN periodi2 ON periodi.id_periodi = periodi2.id_periodo and periodi2.disp = 'libero' WHERE alloggiare.cat = '" & cat & "' and servizi LIKE '%" + Replace(service, "'", "''") + "%' and tipologia LIKE '%" + Replace(tipe, "'", "''") + "%' and alloggiare.localita = '" & local & "' and alloggiare.area = '" & area & "' and alloggiare.letti <= '" & letti & "' and alloggiare.clas LIKE '%" + Replace(clas, "'", "''") + "%' and periodi.dal <= '" & dal_1 & "' and periodi.al >= '" & al_1 & "' and periodi2.disp = 'libero' and periodi2.dal >= '" & dal_1 & "' and periodi2.al <= '" & al_1 & "' GROUP BY periodi2.id_periodo ORDER BY '" & order & "' asc"

    in pratica ho unito 3 tabelle da cui nella prima (alloggirare) ho tutti i dati principali nella seconda (periodi) ho i periodi di disponibilità e nella (periodi2) terza ho i prezzi divisi per settimane.

    Andrebbe tutto bene se non fosse per il fatto che non riesco ad estrarre solo i records che hanno, nei corrispondenti records della tabella periodi2, disponibilità 'libero' su tutti records trovati.

    Uteriore spiegazione: devo selezionare una casa (di case in affitto si parla) che sia prenotabile nel periodo e sommare i prezzi delle settimane interne a quel periodo ma questo solo se il periodo interno al periodo prenotabile e tutto libero; diversamente la casa non deve essere visualizzata.

    Un ENORME grazie a chiunque mi dia un'idea per risolvere questo problema.

    ciao



    Segnala questo messaggio ad un moderatore | IP

  2. #2
    Utente di HTML.it L'avatar di orcim
    Registrato dal
    May 2003
    Messaggi
    1,692
    da diventare pazzi... credo che per la complessità della query sarebbe il caso di provarla prima dentro access e successivamente su asp... così è come cercare l'ago nel pagliaio...

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    12
    Non si trata di Access ma di Mysql

  4. #4
    Utente di HTML.it L'avatar di diegoctn
    Registrato dal
    May 2001
    Messaggi
    2,118
    Ti consiglio di fare una semplicissima select con solo quel campo. Prova a tirar fuori i record che hanno libero. Prova on '"libero"'.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    12
    intendi dire di nidificare una select da inserire al posto di periodi2?

  6. #6
    Utente di HTML.it L'avatar di diegoctn
    Registrato dal
    May 2001
    Messaggi
    2,118
    INTENDO DIRE UN BANALISSIMO


    codice:
    "Select disp from periodi2 where disp='libero'"

  7. #7
    Moderatore di CMS L'avatar di kalosjo
    Registrato dal
    Jul 2001
    residenza
    In culo alla luna
    Messaggi
    1,999
    and periodi2.disp = 'libero' WHERE

    periodi2.disp = 'libero' invece di metterlo nel join, spostalo dentro la clausola WHERE
    Scusate i puntini di sospensione...... La verità è che non ho argomenti....

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    12
    è già anche nel where, era nel join ma ho già provato a toglierlo..non cambia nulla.

    sono disperato!!

    grazie comunque

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    12
    RAGAZZI HO RISOLTO:

    "SELECT *, SUM(periodi2.prezzo) as risultato_prz, count(periodi2.disp) as contdisp FROM (alloggiare INNER JOIN periodi ON alloggiare.id = periodi.id_casa) INNER JOIN periodi2 ON periodi.id_periodi = periodi2.id_periodo WHERE alloggiare.cat = '" & cat & "' and servizi LIKE '%" + Replace(service, "'", "''") + "%' and tipologia LIKE '%" + Replace(tipe, "'", "''") + "%' and alloggiare.localita = '" & local & "' and alloggiare.area = '" & area & "' and alloggiare.letti <= '" & letti & "' and alloggiare.clas LIKE '%" + Replace(clas, "'", "''") + "%' and periodi.dal <= '" & dal_1 & "' and periodi.al >= '" & al_1 & "' and periodi2.disp = 'libero' and periodi2.dal >= '" & dal_1 & "' and periodi2.al <= '" & al_1 & "' GROUP BY periodi2.id_periodo HAVING contdisp = '" & data_xy & "' ORDER BY '" & order & "' asc"

    nella prima modifia evidenziata calcolo il numero di records (e quindi il numero di settimane) liberi, nella seconda controllo che il numero di records liberi sia uguale a quello delle settimane interne al periodo.

    Per stasera sono un genio!!!

    ...Domani si vedrà

    ciao a tutti

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.