|
|
|
| Как заполучить все записи из таблицы tabA и tabB удовлетворяющие след. критериям
tabA.a_id = N
tabB.a_id = tabA.a_ID
tabB.name = 'test'
учитывая, что записи в tabB ссылающейся на tabA может не оказаться. То есть, строка из таблицы А должна вернуться в любом случае (если a_id = N), независимо от того, существует ли соответствующая строка во второй таблице. А из второй таблицы строка должна вернуться по 2-ум критериям.
Как я понял, копать надо в сторону LEFT OUTER JOIN, но у меня не получается сделать проверку на второй критерий (tabB.name = 'test').
Как быть, м? | |
|
|
|
|
|
|
|
для: Zilog
(02.12.2009 в 21:59)
| | ну так покажите запрос который у Вас почти работает | |
|
|
|
|
|
|
|
для: Valick
(02.12.2009 в 22:35)
| | SELECT * FROM fotobank_images AS image
LEFT OUTER JOIN fotobank_images_data AS idata
ON image.imageID=idata.imageID
WHERE
image.fbID='.$fbID.'
но в таком виде взвращаются все записи. а надо вставить проверку на то,что бы поле
idata.langID="en". Но этот вариант не пашет
...
ON image.imageID=idata.imageID
ON idata.langID="en" | |
|
|
|
|
|
|
|
для: Zilog
(02.12.2009 в 23:08)
| | Разве
WHERE
image.fbID='.$fbID.' AND idata.langID="en"
не канает? | |
|
|
|
|
|
|
|
для: Valick
(02.12.2009 в 23:16)
| | >не канает?
эх, если бы канало. Если во второй таблице ничего походящего нет - и результат возвращается нулевой, хотя хочется всё равно получить весь подходящий список из первой таблицы. | |
|
|
|
|
|
|
|
для: Zilog
(02.12.2009 в 23:30)
| | мужики, подскажите, м? уже всю голову сломал. | |
|
|
|
|
|
|
|
для: Zilog
(03.12.2009 в 00:14)
| | так-с, ну с этой задачей я справился. всё возвращается как надо.
НО:
imageID data1 data2 someID imageID param1 param2
22 abc cba 4 NULL abc NULL
в результате у меня imageID - 2 раза. Как удалить второй, который NULL и портит всю картину? | |
|
|
|
|
|
|
|
для: Zilog
(03.12.2009 в 01:24)
| | >в результате у меня imageID - 2 раза. Как удалить второй, который NULL и портит всю картину?
В каком результате?
В результате какого запроса?: | |
|
|
|
|
|
|
|
для: Trianon
(03.12.2009 в 01:53)
| | >В каком результате?
>В результате какого запроса?:
да это не важно. важно другое, что надо конкретно вручную задавать, какие поля нужно заполучить, что бы столбцов-дублей не появлялось. Атоматом, как понял это делается геморно, да и выполняется долго. | |
|
|
|
|
|
|
|
для: Zilog
(03.12.2009 в 02:05)
| | >>В каком результате?
>>В результате какого запроса?:
>что надо конкретно вручную задавать, какие поля нужно заполучить, что бы столбцов-дублей не появлялось.
В каком именно запросе?
Если запрос вообще не написать - никаких столбцов точно не получится. В том числе и дублей. | |
|
|
|
|
|
|
|
для: Zilog
(02.12.2009 в 21:59)
| |
...
FROM tabA
LEFT JOIN tabB ON tabB.a_id = tabA.a_ID AND tabB.name = 'test'
WHERE tabA.a_id = $N
|
| |
|
|
|
|
|
|
|
для: Trianon
(03.12.2009 в 01:52)
| | >
>...
>FROM tabA
> LEFT JOIN tabB ON ( tabB.a_id = tabA.a_ID AND tabB.name = 'test' )
>WHERE tabA.a_id = $N
|
у меня это заработало только со скобками | |
|
|
|
|
|
|
|
для: Zilog
(03.12.2009 в 02:06)
| | Скобки там, конечно, можно поставить. Но по синтаксису они не требуются.
Точно также, как после LEFT не требуется слово OUTER . | |
|
|
|