Visualizzazione risultati 1 fino 9 di 9

Discussione: Query: SELECT di più righe basandosi su una sola colonna

  1. #1
    Guest

    Predefinito Query: SELECT di più righe basandosi su una sola colonna

    In pratica, io devo fare:
    SELECT *
    FROM tabella
    WHERE
    (e ora iniziano i casini)
    starto un ciclo che crea una stringa, che se ha un solo risultato, diventa così:
    id = 1
    se invece ha, per esempio, due risultati, diventa così:
    id = 1 AND id = 2
    o anche tre:
    id = 1 AND id = 2 AND id = 3
    le id possono essere anche sparse, 3 7 10 per esempio.
    Comunque, per ora ho la query completa così:
    Codice PHP:
    SELECT * FROM tabella WHERE id = 1 AND id = 2
    Ma, ovviamente da errore, poichè (non sono sicuro, è una mia ipotesi) due clausole sulla stessa colonna non penso di possano fare.
    Non essendo esperto di PHP, non ne ho la più pallida idea.
    L'errore:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND id = 2' at line ...
    quindi, sì, sembra essere l'AND, ma non capisco, visto che non trovo guide a proposito di più clausole su una sola colonna.

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,761

    Predefinito

    Codice:
    WHERE id = 1 AND id = 2
    Non ha molto senso: non sono esperto di mysql, ma quella condizione non sarà mai valida.

    Quello che vuoi, è forse l'OR?
    Non hai detto cosa vuoi selezionare... Se vuoi selezionare solo le righe che hanno come ID 1 oppure 2, dovresti usare la or...

    Ciao!

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Codice:
    WHERE id = 1 AND id = 2
    Non ha molto senso: non sono esperto di mysql, ma quella condizione non sarà mai valida.

    Quello che vuoi, è forse l'OR?
    Non hai detto cosa vuoi selezionare... Se vuoi selezionare solo le righe che hanno come ID 1 oppure 2, dovresti usare la or...

    Ciao!
    No no, è che proprio mi servirebbe prendere le righe che hanno le id che gli metto.
    Poichè ogni riga ha un id, ed ogni id ha le proprie info... e mi servono tutte quelle info. Difatti la OR l'avevo già escluso a prescindere, visto che mi serve una AND (in termini booleani).

    EDIT: Avevo pensato a fare più query, cioè dentro ad un ciclo prendo ogni id che mi serve, poi provo, ma non posso assicurare che funzioni. Spesso i miei pensieri sono contorti XD.

    Ok, in pratica, il codice prima era così:
    Codice PHP:
    $query = 'SELECT *
    FROM tabella
    WHERE '
    ;
    $array = explode(',', $lista);
    $index = 0;

    do
    {
    if(
    $index > 0)
    {
    $query .= ' AND ';
    }
    $query .= 'id = ' . $array[$index];
    $index++;
    }
    while(
    $index < count($array));
    e l'ho fatto diventare:
    Codice PHP:
    $array = explode(',', $lista);
    $index = 0;

    do
    {
    $query = 'SELECT * FROM meter_powers WHERE id = ' . $array[$index];
    $mysqlquery = mysql_query($query) or die('ERROR("' . mysql_error() . '")');

    $row = mysql_fetch_row($mysqlquery);

    suddivido la riga nelle varie variabili, ecc...

    $index++;
    }
    while(
    $index < count($array));
    Ultima modifica di mcserver : 01-07-2011 alle ore 18.32.45

  4. #4
    Guest

    Predefinito

    Codice PHP:
    SELECT * FROM tabella WHERE id IN (1, 2)
    oppure

    Codice PHP:
    SELECT * FROM tabella WHERE id = 1 OR id = 2

  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da payneitalia Visualizza messaggio
    Codice PHP:
    SELECT * FROM tabella WHERE id IN (1, 2)
    oppure

    Codice PHP:
    SELECT * FROM tabella WHERE id = 1 OR id = 2
    Il primo codice sembra dare errore dopo la virgola di (1, 2)

    Il secondo dà errore come quando usavo l'AND

    P.S. comunque il codice che ho postato prima (quello che ho cambiato, mettendo più query) non va e da errore anche quello:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
    Ultima modifica di mcserver : 30-06-2011 alle ore 21.49.28

  6. #6
    Guest

    Predefinito

    Citazione Originalmente inviato da payneitalia Visualizza messaggio
    Codice PHP:
    SELECT * FROM tabella WHERE id IN (1, 2)
    oppure

    Codice PHP:
    SELECT * FROM tabella WHERE id = 1 OR id = 2
    oppure 2 query diverse.

  7. #7
    Guest

    Predefinito

    Citazione Originalmente inviato da programmarealpc Visualizza messaggio
    oppure 2 query diverse.
    si, ma non conosco il numero di ID da prelevare. Possono essere una come venti.

  8. #8
    Guest

    Predefinito

    fai un ciclo in cui fai la query e poi cambi l'id finchè nn li hai finiti tutti...

  9. #9
    Guest

    Predefinito

    Citazione Originalmente inviato da mcserver Visualizza messaggio
    Codice PHP:
    $array = explode(',', $lista);
    $index = 0;

    do
    {
    $query = 'SELECT * FROM meter_powers WHERE id = ' . $array[$index];
    $mysqlquery = mysql_query($query) or die('ERROR("' . mysql_error() . '")');

    $row = mysql_fetch_row($mysqlquery);

    suddivido la riga nelle varie variabili, ecc...

    $index++;
    }
    while(
    $index < count($array));
    Mi quoto da solo, visto che ho già fatto un ciclo (è cinque o sei messaggi sopra).
    Ultima modifica di mcserver : 01-07-2011 alle ore 18.32.35

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •