2012-03-12 18 views
6

Mam MySQL wstawić zapytanie który musi ciągnąć jedno pole danych z innej tabeli, a ja zastanawiałem się, czy można to zrobić z wybraną podzapytaniuMySQL Włóż z wybranymi podzapytania dla jednej wartości

INSERT INTO resources 
(
    client_account_id, 
    date_time, 
    resource_name, 
    resource_description_id, 
) 
VALUES 
(
     {0}, 
     '{1}', 
     '{2}', 
     {3}, 
) 

i muszę kwerendę wybierającą, aby uzyskać resource_description_id z innej tabeli

SELECT resource_description_id 
FROM resource_descriptions 
WHERE resource_description = '{0}' 

widziałem przykłady do powielania całych tabel, ale nie jestem pewien, jak można to zrobić, gdy tylko jedno pole jest potrzebne z innego stolika i innych dziedzinach pochodzą z formularza.

Dzięki!

Odpowiedz

8

Twoje podzapytanie może po prostu wybrać potrzebne wartości. Coś jak:

INSERT INTO resources 
(
    client_account_id, 
    date_time, 
    resource_name, 
    resource_description_id, 
) 
SELECT {0}, '{1}','{2}', resource_description_id 
FROM resource_descriptions 
WHERE resource_description = '{3}' 
+0

Problem z tą odpowiedzią polega na tym, że jeśli opis zasobu nie pasuje, oznacza to, że nic nie ma. Czy próbowałeś już uruchomić swoją odpowiedź? – kasavbere

+0

Mam formularz, który użytkownik przesyła nazwę zasobu, opis i słowa kluczowe, Przed wstawieniem do tabeli zasobów wstawiam do tabeli opisu zasobów, więc opis będzie zawsze zgodny. Ale to sprawia, że ​​myślę, że istnieje możliwość duplikowania opisów zasobów. Czy istnieje sposób na wyciągnięcie ostatnio wstawionego wiersza ze stołu? – mike

1
INSERT INTO resources 
(
    resource_description_id 
) 
(
SELECT resource_description_id 
FROM resource_descriptions 
WHERE resource_description = '{0}' 
) 
0

Można zrobić wkładkę użyciu wyniki kwerendy wybierającej

INSERT INTO resources 
(
client_account_id, 
date_time, 
resource_name, 
resource_description_id 
) 
SELECT 
    '{0}', 
    '{1}', 
    '{2}', 
    resource_description_id 
FROM resource_descriptions 
WHERE resource_description = '{0}' 
2
INSERT INTO resources 
(
client_account_id, 
date_time, 
resource_name, 
resource_description_id, 
) 
VALUES 
(
    {0}, 
    '{1}', 
    '{2}', 
    SELECT resource_description_id 
FROM resource_descriptions 
WHERE resource_description = '{0}' 
) 
0

MySQL nie jak większość z tych pytań, chyba że dodano nawiasy wokół podzapytania. Oto, czego użyłem.

INSERT INTO resources 
(
client_account_id, 
date_time, 
resource_name, 
resource_description_id, 
) 
VALUES 
(
    '{0}', 
    '{1}', 
    '{2}', 
    (SELECT resource_description_id 
    FROM resource_descriptions 
    WHERE resource_description = '{0}') 
) 
Powiązane problemy