susp3kt Posted May 29, 2015 Report Posted May 29, 2015 Buna ziua,Am si eu o problema cu selectarea unor date dintr-un tabel pe baza conditiilor din alt tabel.tabel 1 "telefoane"id | hash | telefontabel 2 "log_telefoane"id | hash | id_produs$id_produs = 1;Cum extrag din tabelul 1 (telefoane) campurile in care hash != cu hash din tabel 2 sau daca exista hash-ul in tabelul 2 sa afisez doar daca id_produs != $id_produsAm incercat cu urmatorul query insa nu functioneaza corect$this->db->query("SELECT t1.* FROM telefoane t1 LEFT OUTER JOIN log_telefoane t2 ON t2.hash = t1.hash WHERE t1.hash IS NULL OR t2.id_produs != 1");Va multumesc Quote
susp3kt Posted May 29, 2015 Author Report Posted May 29, 2015 Asa?Error 404 Not FoundNu chiar, dar iti multumesc pentru incercare.Uite aici, am mai simplificat putin: Error 404 Not FoundIdeea este ca daca totusi hash-ul din tabelul telefoane exista si in log_telefoane sa mai faca o verificare in functie de campul produs si daca produsul != "Alcatel" sa il afiseze.Ceva de genul, dar nu este scris corect si SELECT * FROM telefoane WHERE hash NOT IN (SELECT hash FROM log_telefoane) OR log_telefoane.produs != 'Alcatel' Quote
Wav3 Posted June 2, 2015 Report Posted June 2, 2015 (edited) Nu ai specificat corect structura tabelelor. Ai o cheie de legatura intre ele? (un foreign key).In primul post ai zis id_produs != $id_produs, apoi produs != "Alcatel". Sa inteleg ca id_produs este coloana "telefon" din primul tabel? In tabelul al doilea si si produs si id_produs? Edited June 2, 2015 by Wav3 Quote
susp3kt Posted August 21, 2015 Author Report Posted August 21, 2015 (edited) Nu ai specificat corect structura tabelelor. Ai o cheie de legatura intre ele? (un foreign key).In primul post ai zis id_produs != $id_produs, apoi produs != "Alcatel". Sa inteleg ca id_produs este coloana "telefon" din primul tabel? In tabelul al doilea si si produs si id_produs?Salut,Scuze de intarziere.Uite un exemplu mai usor de inteles:Avem 2 tabele.Tabel 1: telefoaneTabel 2: log_telefoaneTabel 1 are 2 campuri: id si telefonTabel 2 are la fel, tot id si telefonIn tabel1 am introduse 10 numere de telefon, iar 3 dintre acestea sunt si in tabelul log_telefoneCum fac sa selectez din tabel1 un numar, dar cu conditia ca acesta sa nu existe in tabelul2?Va multumesc Edited August 21, 2015 by susp3kt Quote
Wav3 Posted August 21, 2015 Report Posted August 21, 2015 Salut,Scuze de intarziere.Uite un exemplu mai usor de inteles:Avem 2 tabele.Tabel 1: telefoaneTabel 2: log_telefoaneTabel 1 are 2 campuri: id si telefonTabel 2 are la fel, tot id si telefonIn tabel1 am introduse 10 numere de telefon, iar 3 dintre acestea sunt si in tabelul log_telefoneCum fac sa selectez din tabel1 un numar, dar cu conditia ca acesta sa nu existe in tabelul2?Va multumescAsa zi, frate.SELECT *FROM telefoaneLEFT JOIN log_telefoane ON (log_telefoane.telefon = telefoane.telefon)WHERE log_telefoane.telefon IS NULL 1 Quote
susp3kt Posted August 21, 2015 Author Report Posted August 21, 2015 Asa zi, frate.SELECT *FROM telefoaneLEFT JOIN log_telefoane ON (log_telefoane.telefon = telefoane.telefon)WHERE log_telefoane.telefon IS NULLPerfect!Si ca sa-mi afiseze o singura inregistrare din tabel (LIMIT 1) cum as putea sa fac?Multumesc Quote
Wav3 Posted August 21, 2015 Report Posted August 21, 2015 Perfect!Si ca sa-mi afiseze o singura inregistrare din tabel (LIMIT 1) cum as putea sa fac?MultumescPai, LIMIT 1 la urma de tot, ca la orice query.EDIT: Daca tabelele respective sunt mari (log_ imi suna a tabel mare) asigura-te ca ai indecsi pusi. Quote
giv Posted September 11, 2015 Report Posted September 11, 2015 Pentru inregistrari unice se foloseste functia unique.select unique(telefon) from log_telefoaneetc. Quote