Numar de Join-uri in functie de conditie
Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
-
sterica
- Mesaje: 285
Numar de Join-uri in functie de conditie
Salutare,
Am urmatorul tabel mysql:
Cod: Selectaţi tot
tblA
+----+--------+-------+------------+
| ID | CLASA | NIVEL | ID_PARINTE |
+----+--------+-------+------------+
| 1 | clasa1 | 1 | 1 |
| 2 | clasa2 | 2 | 1 |
| 3 | clasa3 | 3 | 2 |
| 4 | clasa4 | 4 | 3 |
+----+--------+-------+------------+
SELECT
tblA4.CLASA,
tblA4.NIVEL,
tblA2.ID AS ID_LVL_2
FROM tblA as tblA4
LEFT JOIN tblA as tblA3 ON tblA3.ID = tblA4.ID_PARINTE
LEFT JOIN tblA as tblA2 ON tblA2.ID = tblA3.ID_PARINTE
WHERE tblA4.NIVEL = 4
return
+--------+-------+----------+
| CLASA | NIVEL | ID_LVL_2 |
+--------+-------+----------+
| clasa4 | 4 | 2 |
+--------+-------+----------+
Incerc sa gasesc o modalitate de a se face automat join-urile in functie de conditia din WHERE.
In cazul de fata daca NIVEL = 4, se fac doua join-uri, daca NIVEL = 5 se fac trei join-uri la acelasi tabel.
Vreau sa aflu ID_PARINTE de nivel 2 pentru clasele care sunt de nivel mai mare de 2.
Sql-ul este rulat in PHP
Multumesc!
MarPlo
Mesaje: 4343
Cu ce tabel /tabeluri vrei sa faci Join si ce vrei sa selectezi din celalalt tabel?
Ce Select ai pentru doua Join-uri?
sterica
Mesaje: 285
fac join-uri cu acelasi tabel, datele fiind inlantuite
MarPlo
Mesaje: 4343
Nu inteleg de ce sa faci Join-uri la acelas tabel. Sau poate nu se intelge exact ce vrei sa obtii din acel tabel.
Din ce am inteles: "
Vreau sa aflu ID_PARINTE de nivel 2 pentru clasele care sunt de nivel mai mare de 2.", s-ar putea face asa:
Cod: Selectaţi tot
SELECT * FROM tblA WHERE ID_PARINTE=2 AND NIVEL>2
sterica
Mesaje: 285
Pentru exemplificare mai adaug o coloana produse.
Am refacut tabele si query
Cod: Selectaţi tot
tblA
+----+---------+--------+-------+------------+
| ID | PRODUS | CLASA | NIVEL | ID_PARINTE |
+----+---------+--------+-------+------------+
| 1 | Produs1 | clasa1 | 1 | 1 |
| 2 | Produs2 | clasa2 | 2 | 1 |
| 3 | Produs3 | clasa3 | 3 | 2 |
| 4 | Produs4 | clasa4 | 4 | 3 |
+----+---------+--------+-------+------------+
SELECT
tblA4.CLASA,
tblA4.NIVEL,
tblA2.ID AS ID_LVL_2
FROM tblA as tblA4
LEFT JOIN tblA as tblA3 ON tblA3.ID = tblA4.ID_PARINTE
LEFT JOIN tblA as tblA2 ON tblA2.ID = tblA3.ID_PARINTE
WHERE tblA4.PRODUS = 'Produs4'
return
+--------+-------+----------+
| CLASA | NIVEL | ID_LVL_2 |
+--------+-------+----------+
| clasa4 | 4 | 2 |
+--------+-------+----------+
Un produs care este de nivel 4 vreau sa aflu care este corespondentul clasei de nivel 2.
MarPlo
Mesaje: 4343
Nu inteleg logica, nu e nici un produs, clasa sau nivel la fel pe aceeasi coloana; dar poate poti sa obtii ce vrei cu doua Select-uri.
In primul selectezi ce vrei dupa nivel, si faci al doilea Select in functie de rezutatul de la primul.
Subiecte similare
-
Extragere număr și puncte din șir în php
PHP - MySQL - XML
Primul mesaj
Am un șir cu numere și puncte. De exemplu '123456 ...'
Vreau să am separat numarul 123456 și punctele ... în doua variabile in php.
Am încercat să...
Ultimul mesaj
E din cauza că punctul (.) in regex reprezinta orice caracter, în timp ce \. este punct literal.
Încearca următorul cod:
$matches = null;
$input...
-
Conversie șir de salariu în număr
JavaScript - jQuery - Ajax
Primul mesaj
Am următoarea problemă:
1. sa se elimine din sirul salarial separatorul de mii (,), astfel 5.555 sa devina 5555.
2. dacă utilizatorul introduce...
Ultimul mesaj
Încercați funcția din următorul cod:
function salNr(s){
//If there is comma before the last two digit, replace it with dot, else remove the...
-
Afisare numar cel mai mare dintr o coloana
PHP - MySQL - XML
Primul mesaj
Bună Marplo
Vreau să extrag din coloan pret cel mai mare numar ca de exemplu 4444.
Mie imi afisează 54 în loc de 4444, dacă în loc de 4444 modific...
Ultimul mesaj
Am schimbat `pret` varchar(20) DEFAULT NULL in `pret` int(11) NOT NULL ca la tine si merge.
Multumesc
-
Buton pentru a crește sau descrește aleator un numar
JavaScript - jQuery - Ajax
Primul mesaj
Intrebare rapida:
Cum pot seta un buton care poate crește și /sau descrește aleator un număr la clic?
Acesta este codul pe care îl am....
Ultimul mesaj
Poti sa folosesti Math.random() pentru a decide dacă numarul va crește sau nu:
<button id='tst_btn'>Change counter</button>
<h3...
-
Convertire 8-biți număr în valoare de culoare Hex în JavaScript
JavaScript - jQuery - Ajax
Primul mesaj
Încerc să convertesc un număr întreg de 8-biți în valoare de culoare Hex. (de ex. FFFFFF).
Numarul de culoare pe 8-biți este generat cu următoarea...
Ultimul mesaj
Dacă ai un număr întreg, poți face cu:
color.toString(16)
Și îl va transforma într-un șir Hex.
// White
color = (255 * 65536) + (255 *...