Temos pavadinimas: WordPress, Shopify ir PHPFusion programuotojų bendruomenė :: MySql
Parašė Qrmiz· 2008 Bir. 11 11:06:16
#1
Gera diena, norėjau paklausti (to kas moka), kaip sujungti atskirų lentelių duomenis?
Bandžiau analizuotis pagal kitus modus ir pan., bet nelabai man veikia padarius.
Tagi pavyzdys:
$result = dbquery("
SELECT tp.*, tf.user_id
FROM ".$db_prefix."thanks tp
LEFT JOIN ".$db_prefix."users tf ON tp.user_name=tf.user_id
WHERE news_id='".$data['news_id']."'");
(Lentelėje thanks yra 3 laukai: thank_id, user_id ir news_id)
Gal kas žinot, galit tiksliau man parašyti, ką daro tie tp.*, ta.* ir t.t.?
Dėkui iš anksto ;)
Parašė ozzWANTED· 2008 Bir. 11 13:06:55
#2
šiaip jau minėjau kad tie tp ir pan. gal būt bet kokie, čia tik fusion standartas:
tp -
Take
Photos
ta -
Take
Albums
tu -
Take
Users
tf -
Take
Forums
tt -
Take
Threads
tp -
Take
Posts
tm -
Take
Messages
Digis taip sugalvojęs. O gali nors ir xb ar ką kitą, ką priskiri tą ir naudoji.
Šiaip maždaug taip turėtų būti:
$result = dbquery("
SELECT tx.thank_id,news_id, tu.* FROM ".$db_prefix."thanks tx
LEFT JOIN ".$db_prefix."users tu ON tx.user_id=tu.user_id
WHERE tx.news_id='".$data['news_id']."'");
Tas kur boldinau, tai jeigu imi iš main lentelės, tai galima ir nerašyt.
Parašė Qrmiz· 2008 Bir. 11 14:06:59
#3
šiek tiek aiškiau, bet matai, parašei:
tx.user_id=tu.user_id
Mano užklausa vėliau atrodo taip:
if (dbrows($result) != 0) {
while ($data = dbarray($result)) {
echo "<img src='".THEME."images/bullet.gif' alt=''> ";
echo "</span>\n".$data['user_id']."</span>\n"; }
}
Viskas čia veikia, atvaizduoja nario ID, bet man reikia, kad rodytų jo vardą, bandžiau taip:
tx.user_id=tu.user_name
ir tada tvaizdavime dariau: ".$data['user_name'].", tačiau tuomet nieko nerodo...:|
Parašė ozzWANTED· 2008 Bir. 11 14:06:50
#4
Nu nesamone pisi:
tx.user_id=tu.user_name
"1" = "tomas".
Gi niekada tokia lygybė neegzistuotas. Tas sulyginimas, turi būti vienodos 2 reikšmės 2 lentelėse kad galėtų kaip vieną imti.
O jau tada turi būti
$data2['user_name']
Ir būtinai $data
2, nes $data tu jau esi panaudojęs:
news_id='".$data['news_id']."'");
Parašė Qrmiz· 2008 Bir. 11 15:06:11
#5
tai klausimas, kodėl comments_include.php yra tokia eilutė: LEFT JOIN ".DB_PREFIX."users tcu ON tcm.comment_name=tcu.user_id ?
Parašė swyper· 2008 Bir. 11 16:06:31
#6
Ir pre to pacio gal galite parasyti koda kad roditu daugiausiai vertinamiausias naujienas ir nuotraukas nes nelb zn kaip reik uzklausa padariti, nors uzklausa numestelkit |
Parašė MAnjack· 2008 Bir. 11 16:06:46
#7
swyper, prie kokio to pačio?
Qrmiz, ten taip parašyta, nes į comment_name įrašomas nario id.
Parašė Qrmiz· 2008 Bir. 11 17:06:25
#8
tai kaip man pagal mano tą užklausą, turint nario id, gauti user_name iš lentelės users?
Parašė ramon· 2008 Bir. 11 17:06:12
#10
Megink toki buda:
$a = dbquery("SELECT x_narys FROM ".$db_prefix."xx");
$b = dbarray($a);
$aa = dbquery("SELECT * FROM ".$db_prefix."users WHERE user_id='".$b['x_narys']."'");
$bb = dbarray($aa);
echo $bb['user_name'];
PS. Is atmintes rasiau tai klaidu gali but.
Parašė Qrmiz· 2008 Bir. 11 18:06:26
#11
Ačiū ramon, padėjai ;)