Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    727

    MYSQL: una select da DUE tabelle, si può?

    da cavernicolo del php quale sono, ho inventato questa select ma non va... ma mi servirebbe proprio una roba così....

    $query = "SELECT campouno,campodue FROM tabellauno and campouno FROM tabelladue WHERE $condiz and campouno like '%parola_che_metto_io%' ORDER BY $order $desc LIMIT $start,$step";
    $result = mysql_query($query, $mysql_link);
    $rows = mysql_num_rows($result);

    ossia dovrei prendere alcuni campi da una tabella e contamporaneamente un altro da un'altra e poi filtrare i risultati e pubblicarli, penso si possa fare ma... come???

  2. #2
    Utente di HTML.it L'avatar di luke83
    Registrato dal
    Jul 2000
    Messaggi
    1,217
    1. dài almeno un errore da cui partire, mago zurlì al momento è fuori
    2. togli la end tra le due tabelle
    3. ci sono un paio di post inerenti freschi di giornata... controlla lì se c'è già la tua soluzione prima di ri.postare..

    ..::Luca::..
    » "se nn riesci a venirene a capo.. usa il tasto INVIO" © 2005 Luke83
    » "letta la documentazione, spazio all'immaginazione.." © 2006 Luke83
    [frasi random] - [Lucopedia] - [laFetta]

  3. #3
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442
    Non hai ben chiara la sintassi SQL, cmq si fa
    codice:
    SELECT campouno, campodue FROM tabellauno, tabelladue WHERE $condiz and campouno like '%parola_che_metto_io%' ORDER BY $order $desc LIMIT $start,$step";
    se campouno esiste in entrambe le tabelle allora devi usare la sintassi nometabella.nomecampo nella select. Per comodità puoi anche usare gli alias.

    Dai uno sguardo qui

    http://dev.mysql.com/doc/mysql/en/select.html

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    727
    ho letto, letto e fatto
    prima i nomi dei campi
    poi il from
    poi i nomi delle tabelle,
    poi il where ecc ecc
    ebbene non mi restituisce errore mysql MA mi restituisce SOLO l'ultimo record ripetuto x tutta la lunghezza della pagina
    mmmmh
    tra l'altro l'ultimo (e unico) record che mi restituisce NON risponde assolutamente al where che gli chiedo io
    suggerimenti?

  5. #5
    ti suggerisco di postare la stringa SQL che usi quando ottieni quel risultato bizzarro
    E anche il codice magari... portebbe esserci qualche errore anche li..

    magari hai fatto una cosa di questo genere... che ne so.. ipotizzo cosa potrebbe originare un problema simile se la stringa SQL è corretta..


    $result=mysql_query($sql);
    $rs=mysql_fetch_object($result);

    while($rs) print $rs->cheneso;

    Lungo le due rive del fiume gelato si stendeva la cupa e tetra foresta di abeti, dai quali il vento aveva appena spazzato il manto di brina. Nella luce crepuscolare quegli abeti neri e sinistri sembravano inclinarsi l'uno verso l'altro. Un silenzio minaccioso incombeva sul paesaggio, privo di qualsiasi segno di vita o di movimento, e desolato e freddo al punto da non poter ispirare che un solo sentimento: quello della più triste malinconia. E nello stesso tempo pareva che da quel paesaggio trapelasse una specie di riso, un riso ben più spaventoso di qualsiasi malinconia o tristezza, un riso tragico, come quello di una sfinge, un riso agghiacciante più della brina e che rammendava l'incombere minaccioso dell'ineluttabile. Era la saggezza potente e impenetrabile dell'eternità che irrideva alla vita, alla sua futilità e agli sforzi degli uomini.

  6. #6
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442
    La palla di vetro purtroppo non ce l'ha nessuno, se posti un pò di codice forse ti si può dare una mano, altrimenti la vedo dura...

    Che vuol dire "ripetuto x tutta la lunghezza della pagina"?
    Come stampi i risultati?

    Scrivi nel codice echo $query; dopo che l'hai costruita e posta la query che viene effetivamente eseguita.

    Dai qualche info sul db.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    727
    grazie a tutti
    allora questa è la select originale che funziona e che restituisce una tabella con tutti gli ordini:

    $query = "SELECT cx_id, cx_data, cx_trasp, cx_codepromo, cx_merce, cx_idutente, cx_modpay, cx_modtrasp, cx_consegnato, cx_pagato FROM carrellosintx WHERE $condiz ORDER BY $order $desc LIMIT $start,$step";
    $result = mysql_query($query, $mysql_link);
    $rows = mysql_num_rows($result);

    questa è invece quella taroccata da me

    $query = "SELECT cx_id, cx_data, cx_trasp, cx_codepromo, cx_merce, cx_idutente, cx_modpay, cx_modtrasp, cx_consegnato, cx_pagato, mod_nome_ita FROM carrellosintx, mod WHERE $condiz and mod_nome_ita like '%TSS%' ORDER BY $order $desc LIMIT $start,$step";
    $result = mysql_query($query, $mysql_link);
    $rows = mysql_num_rows($result);

    che ha l'aggiunta di un campo, di una tabella e di una condizione nel where

    questo è l'echo query

    SELECT cx_id, cx_data, cx_trasp, cx_codepromo, cx_merce, cx_idutente, cx_modpay, cx_modtrasp, cx_consegnato, cx_pagato, mod_nome_ita FROM carrellosintx, mod WHERE 1 and mod_nome_ita like '%TSS%' ORDER BY cx_id DESC LIMIT 0,20

  8. #8
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442
    1) A cosa serve selezionare da due tabelle senza fare nessun join?

    codice:
    WHERE 1 and mod_nome_ita like '%TSS%'
    2) A cosa serve la condizione WHERE 1??

    Hai un interfaccia tipo phpmyadmin per fare le query in manuale? Ti consiglio di usarne una per testare le query prima di farle con il php.

    In particolare questa query ti da un numero elevatissimo di risultati, quanto restituisce la mysql_num_rows?

    Prova ad eseguire queste query

    codice:
    SELECT COUNT(*) FROM carrellosintx;
    SELECT COUNT(*) FROM mod WHERE mod_nome_ita like '%TSS%';
    e moltiplica i due numeri che ti escono, e vedrai che sono uguali a quello dato da mysql_num_rows.

    Questo lo hai perchè non fai nessun join tra le due tabelle.

  9. #9
    se mod_nome_ita non esiste su una delle due tabelle avrai tutti i risultati di una tabella mentre quelli dell'altra saranno ripetuti perchè la clausola WHERE mod_nome_ita = '%$str%' si applica solo su una delle due tabelle.

    In pratica si restringe i set di risultati di una tabella mentre il set di risultati dell'altra rimane completo. In questo modo si ottengono risultati inattesi.

    Devi effettuare un join tra le due tabelle in modo da collegare i rispettivi record tra di loro. Poi potrai effettuare il LIKE come criterio di ricerca.

    In poche parole ti serve un

    SELECT * FROM table1, table2 WHERE table1.es=table2.es AND table1.str = 'peresempio';

    In questo caso a differenza di quello che hai fatto tu, prima vengono joinate (collegate) le tabelle, e solo successivamente vengono smistate.

    Lungo le due rive del fiume gelato si stendeva la cupa e tetra foresta di abeti, dai quali il vento aveva appena spazzato il manto di brina. Nella luce crepuscolare quegli abeti neri e sinistri sembravano inclinarsi l'uno verso l'altro. Un silenzio minaccioso incombeva sul paesaggio, privo di qualsiasi segno di vita o di movimento, e desolato e freddo al punto da non poter ispirare che un solo sentimento: quello della più triste malinconia. E nello stesso tempo pareva che da quel paesaggio trapelasse una specie di riso, un riso ben più spaventoso di qualsiasi malinconia o tristezza, un riso tragico, come quello di una sfinge, un riso agghiacciante più della brina e che rammendava l'incombere minaccioso dell'ineluttabile. Era la saggezza potente e impenetrabile dell'eternità che irrideva alla vita, alla sua futilità e agli sforzi degli uomini.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    727
    grazie a tutti x gli aiuti, allora....
    x IroN@xiD: mod_nome_ita esiste eccome nella tabella mod!!! è questo che mi fa impazzire!!!

    comunque ok, ho capito che devo fare un join, non lo so fare però voglio prima provarci da solo, stasera mi metto a ravanare e poi vi dico i risultati, grazie ancora e a dopo
    ciao

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.