Програмиране > Бази данни

Заявка от 2 таблици

(1/2) > >>

viktor5:
Привет колеги.
Имам 2 таблици с еднакви колони.
table1 (id, ime) и table2 (id, ime)
Правя заявката от едната таблица - вс е ок.

--- Код: MySQL ---$result=mysql_query("SELECT * FROM table1 WHERE ime ORDER BY RAND() limit 1  ");while($row=mysql_fetch_assoc($result)){но добавя ли и втората - не става

--- Код: MySQL ---$result=mysql_query("SELECT * FROM table1, table2 WHERE ime ORDER BY RAND() limit 1  ");while($row=mysql_fetch_assoc($result)){
Къде греша? Как може да се извади резултата и от двете таблици рандом в една заявка?

Avalanche:
Здрасти,

Най-вероятно ти казва че имената на колоните не са еднозначни. Може да си сигурен като добавиш няколко проверки да видиш какво всъщност се случва:

--- Код: PHP ---$result = mysql_query("SELECT * FROM table1, table2 WHERE ime ORDER BY RAND() LIMIT 1");if (!$result) {    var_dump(mysql_error());}while($row = mysql_fetch_assoc($result)) {
Ако това е проблемът, ще трябва да изброиш имената на колоните вместо да ги взимаш всички с помощта на астериска (*), даже и с помощта на AS да им сложиш други имена в конкретната заявка -
--- Код: MySQL ---SELECT `table1`.`id` AS `t1id`, `table2`.`id` AS `t2id`...
П.п. Не забравяй, че mysql_ разширението вече е спряно от поддръжка и ползването на функциите му не се препоръчва. Алтернативите са MySQLi и PDO.

viktor5:
Благодаря, за бързия отговор!!!
Направих проверката резултата е  - string(48) "Column 'ime' in where clause is ambiguous"    
сега ще пробвам  :)

viktor5:
Здравейте отново, Пробвам всевъзможни варианти, обаче все ми дава грешки.
Когато добавя WHERE, спира да работи и вади string(48) "Column 'ime' in where clause is ambiguous"
Без него с двете таблици table1, table2 вади само резултати от table2 (без table1)!!?
а при всички други начини вади грешка за синтаксиса - string(226) "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version

С версия 5.5.37 съм на mysql (Изчетох и целия мануал, но....  ???), да не би тази версия да има някакви промени??? Възможно ли е?

Avalanche:

--- Код: MySQL ---...WHERE ime ORDER BY RAND() LIMIT 1Където `ime` е равно на какво? А и това `ime`, не се знае за коя таблица говориш, затова ти казва че не е ясно (ambiguous).


--- Код: MySQL ---SELECT    `table1`.`id`   AS `t1_id`,    `table1`.`ime`  AS `t1_ime`,    `table2`.`id`   AS `t2_id`,    `table2`.`ime`  AS `t2_ime`FROM    `table1`, `table2`WHERE    `t1_ime` = 'Somebody' OR `t2_ime` = 'Somebody else' Това е идеята на AS, даваш различни имена, за да може да кажеш на MySQL какво точно искаш да направиш, иначе си няма на представа

Навигация

[0] Списък на темите

[#] Следваща страница

Премини на пълна версия