Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente bannato
    Registrato dal
    Mar 2011
    Messaggi
    389

    TROVARE RECORD simili al risultato di una query

    mi spiego meglio

    ho 2 utenti

    id1 id2


    a id1 piacciono i colori
    rosso
    verde
    giallo



    mentre a id2 piacciono i colori

    fucsia
    verde
    giallo


    io vorrei dire alla query, trova i colori di id_2, ma solo quelli che piacciono anche a id_1
    quindi come risultato
    verde
    giallo

    io sto provando a impostare la query cosi


    Codice PHP:
    SELECT FROM colori WHERE colori.id_1='6' AND colori.colore=(SELECT colore FROM colori WHERE id_1='1'
    mi sembra abbastanza giusto
    cioè gli sto dicendo

    seleziona tutto dalla tab colori dove id_1 è uguale per esempio a 6 e il colore deve essere uguale al risultato che ne esce dai colori di id_1


    cosa sbaglio?
    mi dice #1242 - Subquery returns more than 1 row
    la subquery restituisce piu' di 1 risultato


    helpppppp!

  2. #2
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,522
    Non si sa che database stai usando...

    Io proverei a sostituire quel "colori.colore=(SELECT" con un "colori.colore IN (SELECT"

    Ti restituisce errore proprio perchè la seconda query restituisce più di un record ed il database non sa come fare un'operazione di = con più di un record

  3. #3
    Utente bannato
    Registrato dal
    Mar 2011
    Messaggi
    389
    sto usando mysql
    il problema è proprio questo
    sta l'utente id_1 che piacciono 3 colori

    a un altro utente id_1 piacciono altri 3 colori


    come faccio a fargli capire che mi deve dare i colori del primo, solo se sono uguali a quelli del secondo??


    mi hai detto di sostituire questa riga

    codice:
      "colori.colore=(SELECT" con un "colori.colore IN (SELECT"
    grazie ci eravamo arrivati

    la domanda è CON COSA BISOGNA SOSTITUIRLA?

  4. #4
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,522
    Originariamente inviato da Phone
    grazie ci eravamo arrivati
    la domanda è CON COSA BISOGNA SOSTITUIRLA?


    la scrivo intera...

    SELECT * FROM colori WHERE colori.id_1='6' AND colori.colore IN (SELECT colore FROM colori WHERE id_1='1')

  5. #5
    si protrebbero anche mettere le due query in join, uscirebbero solo i colori comuni

  6. #6
    Utente bannato
    Registrato dal
    Mar 2011
    Messaggi
    389
    Originariamente inviato da comas17


    la scrivo intera...

    SELECT * FROM colori WHERE colori.id_1='6' AND colori.colore IN (SELECT colore FROM colori WHERE id_1='1')

    GRAZIE scusami non avevo visto IN ORA FUNZIONA


    vorrei chiedervi a tutti un altra cosa


    se volessi impostare questa query dove il colore deve essere diverso da quello di un altro?

    cioè tipo colore<> eccc

    oppure

    SELECT * FROM colori WHERE colori.id_1='6' AND colori.colore IN "<>" (SELECT colore FROM colori WHERE id_1='1')


    cioè come faccio a dirgli che deve essere diverso dal colore dell id_1=1 ?

    grazie

  7. #7
    invece di "IN" si usa "NOT IN". incrediBBile

  8. #8
    Utente bannato
    Registrato dal
    Mar 2011
    Messaggi
    389
    grande grazieee

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.