Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    5

    Problema con query sql cervellotica

    Ciao a tutti, vi spiego la query che devo eseguire:
    ho 3 tabelle:

    OPERA
    ctrl_num
    (altra roba)

    INFO
    info_id
    cod_num
    ctrl_num(foreign key)
    (altra roba)

    CAMPI
    id
    sub_cod
    value
    id_info(foreign key)

    queste sono le tabelle coi campi che mi interessano, in pratica la query che devo fare dovrebbe darmi per ogni ctrl_num i valori value il cui sub_cod sia "$a" e il cui cod_num sia o 100 o 130 magari orinando in modo che il 130 sia prima del 100.
    Per esempio ho:
    ctrl_num=1--->cod_num=100--->sub_cod=$a, value=valore1
    --->sub_cod=$d, value=valore2
    --->cod_num=130--->sub_cod=$a, value=valore3
    ctrl_num=2--->cod_num=100--->sub_cod=$a, value=valore4
    --->sub_cod=$f, value=valore5
    --->sub_cod=$d, value=valore6
    --->cod_num=130--->sub_cod=$a, value=valore7
    ah ogni ctr_num può avere 1 solo cod_num=100 e 1 solo cod_num=130, ogni cod_num invece può avere un numero diverso di sub_cod coi loro rispettivi valori.
    io vorrei che la mia query mi resituisse:
    valore3, valore1, valore7, valore4 e così via, è possibile?
    Grazie mille per l'aiuto.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    5
    SELECT O.CTRL_NUM, COD_NUM, VALUE
    FROM CAMPI AS C, INFO AS I, OPERA AS O
    WHERE C.ID_INFO = I.ID
    AND I.CTRL_NUM = O.CTRL_NUM
    AND C.SUB_COD = 'a'
    AND (
    COD_NUM =100
    OR COD_NUM =130
    )
    ORDER BY O.CTRL_NUM ASC , COD_NUM DESC , VALUE ASC
    LIMIT 0 , 30

    questa è quella più vicina alla soluzione che mi serve, mettiamo che ho 2 libri dal titolo bbb e aaa, e i rispettivi autori sono autore1 e autore2 e i rispettivi ctrl_num sono 0 e 1.
    Specifico che il fatto che sia un titolo o un autore è dato dal fatto che COD_NUM sia 130 o 100 e ogni ctrl_num rappresenta un libro.

    la query così fatta mi restituisce:
    0, 130, bbb
    0, 100, autore1
    1, 130, aaa
    1, 100, autore2

    io invece voglio
    1,130,aaa
    1,100,autore2
    0,130,bbb
    0,100,autore1

    cioè in pratica deve essere messo in ordine di titolo, ma a coppie con il proprio autore.
    Cioè devo avere i titoli messi in ordine alfabetico, ma la riga dopo restituita dalla query deve essere l'autore relativo a quel titolo, il problema è che o mi vieni così o mi vengono prima tutti i titoli in ordine alfabetico e poi tutti gli autori o ancora peggio un ordine alfabatico dove titoli e autori sono mischiati.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    5
    ok mi rispondo da solo, ho risolto..

    SELECT c2.value, c1.value
    FROM info AS i1, info AS i2, campi AS c1, campi AS c2, opera AS o
    WHERE c1.sub_cod = 'a'
    AND c2.sub_cod = 'a'
    AND c1.id_info = i1.id
    AND c2.id_info = i2.id
    AND i1.cod_num =100
    AND i2.cod_num =130
    AND i1.ctrl_num = o.ctrl_num
    AND i2.ctrl_num = o.ctrl_num
    ORDER BY c2.value ASC

    questo era quello che volevo

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.