Autor | Zpráva | ||
---|---|---|---|
AM_ Profil |
#1 · Zasláno: 1. 6. 2009, 21:48:33
Zdravím,
je možné v MySQL nějak udělat něco jako left join, ale aby v případě, že k danému řádku z tabulky A existuje dle podmínky řádek z tabulky B, aby se připojil jen jeden nalezený? Např. budu mít tabulky: uživatelé: id - jméno 1 Pepa 2 Honza 3 Karel koupené zboží: název - koupil rohlík - 1 chleba - 1 houska- 2 A já bych chtěl dotaz, jehož výsledkem bude uživ. - koupil pepa - rohlík honza-houska karel-null Děkuji za pomoc. |
||
ninja Profil |
#2 · Zasláno: 1. 6. 2009, 22:55:58
A nějaké pravidlo který záznam chcete upřednostnit máte? Stačí přidat:
GROUP BY uzivatele.id |
||
AM_ Profil |
#3 · Zasláno: 1. 6. 2009, 23:26:19
ninja
Aha, díky :) pravidlo žádné není, jen mi šlo o to eliminovat možné vícenásobné záznamy, které by se sice v mém programu neměly vyskytnout, ale kdyby náhodou nějakou chybou, udělaly by v kódu dost zmatek. |
||
TomášK Profil |
#4 · Zasláno: 1. 6. 2009, 23:56:59
AM_
Nestálo by za to nastavit podmínky na databázi tak, aby stejné řádky nemohly vzniknout? Tohle řešení mi přijde na stejném principu jako potlačení chybové hlášky. Pokud bude v databázi chyba, zdá se mi lepší zjistit to co nejdřív - byť se třeba rozbije nějaký výpis - než to potlačovat a nevědět o tom. |
||
AM_ Profil |
#5 · Zasláno: 2. 6. 2009, 09:51:03
No on je problém o něco složitější, na úrovni databáze pokud vím neexistuje podmínka vymezující tuto duplicitu (jsou to časové údaje vymezené počátečním a koncovým datem, které by se pro daného uživatele neměly překrývat). Kdyby se to tam ale náhodou povedlo propašovat, jediné, čemu to ublíží, bude zmatený výpis :)
|
||
Časová prodleva: 15 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0