webForumDet fria alternativet

Om det finns poster, gör detta?

Databaser & SQLur Databashanterare & SQL

4 svar · 465 visningar · startad av Melea

MeleaMedlem sedan juli 20033 147 inlägg
#1

Hej hej,

jag har fyra tabeller, tbl_recipe, tbl_recipe_ingredient, tbl_producer och tbl_producer_product.
Relationen är följande, recipe innehåller receptet, varje recept har x antal olika ingredienser, typ:

tbl_recipe
recipe_id, recipe_name, recipe_info
1, Mormor Karins hallonpaj, En massa info här

tbl_recipe_ingredient
recipe_id, ingredient_id, ingredient_name, ingredient_measure
1, 1, Hallon, 2 dl
1, 2, Mjöl, 1 dl
1, 3, Socker, 1 dl

Jag har också en tabell med producenter och deras råvaror som ser ut såhär:

tbl_producer
producer_id, producer_name
1, Nisses ekogård

tbl_producer_product
producer_id, product_id, product_name
1, 1, Hallon
1, 2, Socker

När jag skriver ut alla ingredienser till ett recept så skulle jag vilja kolla om det finns några med exakt samma namn i tbl_producer_product.
Och om det gör det få ut ett resultat som gör att jag kan på ett enkelt vis göra, typ: if ($result['producer_product'] > 0).

Det är MySQL och PHP jag använder. Enormt tacksam för all hjälp jag kan få!

effataMedlem sedan apr. 2008137 inlägg
#2

Den enklaste lösningen med den struktur du har idag skulle vara att göra en LEFT JOIN från tbl_recipe_ingredient till tbl_producer_product. För mindre datamängder går det bra. Men om du räknar med större datamängder skulle jag absolut skapa en tbl_product och lägga in product_id i både ingredient och producer_product.

MeleaMedlem sedan juli 20033 147 inlägg
#3

Tack för svaret.

LEFT JOIN funkar inte. Om jag kör en LEFT JOIN så skriver den bara ut ingredienserna som matchar de produkter som finns i tbl_producer_product.

Fler tips?

effataMedlem sedan apr. 2008137 inlägg
#4
SELECT i.*, p.product_id, p.producer_id
FROM tbl_recipe_ingredient i
LEFT JOIN tbl_producer_product p ON i.ingredient_name = p.product_name
WHERE i.recipe_id = 1

Den kommer funka. product_id och producer_id kommer vara NULL om det inte finns någon rad i tbl_producer_product.

MeleaMedlem sedan juli 20033 147 inlägg
#5

Japp, löste det på det viset, tänkte först att jag kunde göra allt i en och samma sql-fråga, men var tvungen att köra en till fråga innuti while-loopen.

Tack! :)

144 ms totalt · 3 externa anrop · v20260731065814-full.b2af184d
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)