Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Pobieranie danych z dwóch tabel
LaughFik
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 31.03.2007

Ostrzeżenie: (0%)
-----


Hej.
Mam dwie tabelki:
Cytat
CREATE TABLE `lang` (
`l_id` int(11) NOT NULL auto_increment,
`l_ext` varchar(2) default NULL,
`l_val` text,
`u_usage` int(11) default NULL,
PRIMARY KEY (`l_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin2;

CREATE TABLE `urls` (
`u_id` int(11) NOT NULL auto_increment,
`u_text` int(11) default NULL,
`u_href` varchar(256) default NULL,
`u_css_class` varchar(64) default NULL,
`u_css_id` varchar(64) default NULL,
`u_smarty_name` varchar(64) default NULL,
PRIMARY KEY (`u_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin2;

Url składa się głównie z dwóch części hrefa i tekstu wyświetlanego.
Oba elementy składuję w tabelce lang w tabelce url pola u_href i u_text mają numery u_usage rekordów z tabelki lang.
Jak mam pobrać zamiast u_text i u_href rekord odpowiadający urls.u_href = lang.u_usage as href i urls.u_text = lang.u_usage as text ?
Najprościej mówiąc chciałbym pobrać link z tym że jego adres i nazwa wyświetlana znajdują się w tabeli lang, a w tabeli urls są tylko identyfikatory (u_usage) przechowywać je chcę w tabeli bo chciałbym zrobić kilka wersji językowych. Czy wie ktoś jakiego zapytania użyć żeby zostały pobrane te dane ?
Go to the top of the page
+Quote Post
spryciula
post
Post #2





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 9.12.2006

Ostrzeżenie: (0%)
-----


podrzuć kilka przykładowych wpisów, jakie masz lub będziesz miał w tych dwóch tabelach
Go to the top of the page
+Quote Post
LaughFik
post
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 31.03.2007

Ostrzeżenie: (0%)
-----


CODE
/*Data for the table `lang` */

insert into `lang`(`l_ext`,`l_val`,`u_usage`) values ('en','News',1);
insert into `lang`(`l_ext`,`l_val`,`u_usage`) values ('en','Company',2);
insert into `lang`(`l_ext`,`l_val`,`u_usage`) values ('en','Board',3);
insert into `lang`(`l_ext`,`l_val`,`u_usage`) values ('pl','Nowości',1);
insert into `lang`(`l_ext`,`l_val`,`u_usage`) values ('pl','Firma',2);
insert into `lang`(`l_ext`,`l_val`,`u_usage`) values ('pl','Forum',3);

insert into `lang`(`l_ext`,`l_val`,`u_usage`) values ('pl','nowosci.htm',4);
insert into `lang`(`l_ext`,`l_val`,`u_usage`) values ('pl','firma.htm',5);
insert into `lang`(`l_ext`,`l_val`,`u_usage`) values ('pl','forum.htm',6);
insert into `lang`(`l_ext`,`l_val`,`u_usage`) values ('en','news.htm',4);
insert into `lang`(`l_ext`,`l_val`,`u_usage`) values ('en','company.htm',5);
insert into `lang`(`l_ext`,`l_val`,`u_usage`) values ('en','board.htm',6);


/*Data for the table `urls` */

insert into `urls`(`u_text`,`u_href`,`u_css_class`,`u_css_id`,`u_smarty_name`) values (1,4,NULL,NULL,'url_news');
insert into `urls`(`u_text`,`u_href`,`u_css_class`,`u_css_id`,`u_smarty_name`) values (2,5,NULL,NULL,'url_firma');
insert into `urls`(`u_text`,`u_href`,`u_css_class`,`u_css_id`,`u_smarty_name`) values (3,6,NULL,NULL,'url_forum');

Teraz chciałbym aby link miał taką postać <a href="nowosci.htm">Nowości</a> Parametry odpowiadające obu rekordom to 1 i 4 ( u_usage - ostatni dodawany parametr ) Jak pobrać te rekordy - dwa z tablicy lang kierując się rekordem z tablicy urls ?
Go to the top of the page
+Quote Post
spryciula
post
Post #4





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 9.12.2006

Ostrzeżenie: (0%)
-----


próbowałem napisać sql, pod twoje tabele, ale musiałbyś robić dwa zapytania
ja bym ci proponował, trochę inaczej, zbudować tabelę "lang"

  1. --
  2. -- Struktura tabeli dla `lang`
  3. --
  4.  
  5. CREATE TABLE `lang` (
  6. `l_id` int(11) NOT NULL AUTO_INCREMENT,
  7. `l_ext` char(2) DEFAULT NULL,
  8. `l_val_href` text,
  9. `l_val_text` text,
  10. `u_usage` int(11) DEFAULT NULL,
  11. PRIMARY KEY (`l_id`)
  12. ) ENGINE=InnoDB DEFAULT CHARSET=latin2 AUTO_INCREMENT=1 ;
  13.  
  14. --
  15. -- Zrzut danych tabeli `lang`
  16. --
  17. INSERT INTO `lang`(`l_ext`,`l_val_text`,`l_val_href`,`u_usage`) VALUES ('en','News','news.htm',4);
  18. INSERT INTO `lang`(`l_ext`,`l_val_text`,`l_val_href`,`u_usage`) VALUES ('en','Company','company.htm',5);
  19. INSERT INTO `lang`(`l_ext`,`l_val_text`,`l_val_href`,`u_usage`) VALUES ('en','Board','board.htm',6);
  20. INSERT INTO `lang`(`l_ext`,`l_val_text`,`l_val_href`,`u_usage`) VALUES ('pl','Nowości','nowosci.htm',4);
  21. INSERT INTO `lang`(`l_ext`,`l_val_text`,`l_val_href`,`u_usage`) VALUES ('pl','Firma','firma.htm',5);
  22. INSERT INTO `lang`(`l_ext`,`l_val_text`,`l_val_href`,`u_usage`) VALUES ('pl','Forum','forum.htm',6);


i wtedy wyciągasz dane za pomocą prostego sql'a

  1. SELECT l_val_href, l_val_text
  2. FROM lang1 l, urls u
  3. WHERE u.u_href = l.u_usage AND l_ext = 'pl'


Ten post edytował spryciula 2.04.2007, 15:24:48
Go to the top of the page
+Quote Post
LaughFik
post
Post #5





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 31.03.2007

Ostrzeżenie: (0%)
-----


Wszystko fajnie ale w tabeli lang mają być nie tylko linki ...
znaczy się moje ujednolicenie diabli wzięli i muszę zrobić to inaczej bo albo się nie da tak jak ja chcę albo nikt nie wie jak to zrobić faaaajnie

Konkurs rozwiązany !

mysql> SELECT l1.l_ext,l1.l_val as text,l2.l_val as url,urls.* FROM `urls` LEFT JOIN lang l1 ON l1.u_usage = urls.u_text
LEFT JOIN lang l2 ON l2.u_usage = urls.u_href WHERE l1.l_ext = 'pl' and l2.l_ext = 'pl';
Pobiera to zapytanie dokładnie to co trzeba.
Już zamierzałem zmieniać strukturę bazy ................... Dobrze jest wiedzieć że jest tutaj ktoś komu się chciało za dwadzieścia złotych napisać to dla mnie.
[SOLVED]
Go to the top of the page
+Quote Post
Koshin
post
Post #6





Grupa: Zarejestrowani
Postów: 196
Pomógł: 0
Dołączył: 29.04.2002
Skąd: jesteś?

Ostrzeżenie: (0%)
-----


Szkoda, że komuś jednak się nie chciało tych 20 zł wysłać (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
To już drugi przypadek na tym forum, w ciągu miesiąca, gdy za pomoc nie otrzymuje OBIECANEGO grosza.
Go to the top of the page
+Quote Post
LaughFik
post
Post #7





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 31.03.2007

Ostrzeżenie: (0%)
-----


Bardzo przepraszam że tak wyszło.
Przeziębiłem się i w ogóle zapomniałem o bożym świecie.
Zwlekę się z wyra jutro ( właściwie już dzisiaj ), pójdę na pocztę i wyślę ci obiecane 20 złotych. Gwoli ścisłości tobie i drugiemu panu który mi przysłał rozwiązanie. Jeszcze raz obu was przepraszam.
Go to the top of the page
+Quote Post
Koshin
post
Post #8





Grupa: Zarejestrowani
Postów: 196
Pomógł: 0
Dołączył: 29.04.2002
Skąd: jesteś?

Ostrzeżenie: (0%)
-----


I wszystko u mnie dobrze się skończyło gdyż wpłynął obiecany bonus na moje konto. Dziękuje.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.12.2025 - 13:36