Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapytanie SQL do całej bazy
Forum PHP.pl > Forum > PHP
kosmos
Witam
Mam taki problem związany z zapytaniem do bazy danych.

Otóż jest to baza sklepu internetowego i chcę zrobić opcję usuwania konkretnego produktu z asortymentu slepu.
Każdy produkt posiada swój unikalny numer EAN-13


Znam zapytania tego typu:

  1. <?php
  2. $zapytanie =mysql_query("DELETE FROM bateria
  3.  
  4. WHERE EAN_13='$id'")
  5. or die('Błąd usuniecia danych produktu z e-sklpeu admin');
  6. ?>


Natomiast nie chcę przeszukiwać osobnych tabel bazy danych ALE wszystkie tabele całej bazy Nie ma ich dużo więc nie obciążę jej za bardzo a nie chcę powielać kodu.


Pisałem już tak :

  1. <?php
  2. $zapytanie =mysql_query("DELETE FROM bateria, procesor, matryca
  3.  
  4.  WHERE EAN_13='$id'")
  5.  or die('Błąd usuniecia danych produktu z e-sklpeu admin');
  6. ?>


Ale zwraca błąd.
W każdej tabeli produktu czy to bateria czy procek czy mysz ... mam rekord EAN_13 tak jak wspomniałem na początku,

Z góry dzięki za odpowiedzi

Z poważaniem kosmos :-)
artega
  1. DELETE FROM t1, t2, t3 USING bateria AS t1 INNER JOIN procesor AS t2, matryca AS t3 WHERE t1.EAN_13 = t2.EAN_13 = t3.EAN_13 = '$id'
phpion
Pozostaje tylko pytanie co będzie szybsze: taki DELETE ze złączeniem 3 tabel czy razem 3 osobne zapytania. Wg mnie odpowiedź "b".

PS: takie rzeczy powinno się realizować już na poziomie bazy danych przy pomocy ON DELETE CASCADE.
kosmos
Witam ponownie

zrobiłem takie zapytanie jak podaliście .. nie przejmujcie się ilością tabel one naprawdę są małe.

  1. <?php
  2. $zapytanie =mysql_query("DELETE FROM t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t1
    5 USING bateria as t1 INNER JOIN dysk as t2 INNER JOIN grafika as t3 INNER JOIN k
    lawiatura as t4 INNER JOIN matryca as t5 INNER JOIN monitor as t6 INNER JOIN mysz
     as t7 INNER JOIN naped as t8 INNER JOIN notebooki as t9 INNER JOIN obudowa_atx a
    s t10 INNER JOIN plyta_glowna as t11 INNER JOIN procesor as t12 INNER JOIN ram as
     t13 INNER JOIN zasilacz as t14 INNER JOIN zastawy_komputerowe as t15
  3. WHERE t1.EAN_13=t2.EAN_13=t3.EAN_13=t4.EAN_13=t5.EAN_13=t6.EAN_13=t7.EAN_13=t8.E
    A
  4. _13=t9.EAN_13=t10.EAN_13=t11.EAN_13=t12.EAN_13=t13.EAN_13=t14.EAN_13=t15.EAN_13='$id'")
  5. or die('Błąd usuniecia danych produktu z e-sklpeu admin');
  6. ?>


i jedna wyskakuje błąd
[php
Błąd usuniecia danych produktu z e-sklpeu admin
[/php]

mam coś źle w składni questionmark.gif bo nazyw tabel już sprawdziłem
artega
  1. DELETE FROM t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15 USING bateria AS t1 INNER JOIN dysk AS t2, grafika AS t3, klawiatura AS t4, matryca AS t5, monitor AS t6, mysz AS t7, naped AS t8, notebooki AS t9, obudowa_atx AS t10, plyta_glowna AS t11, procesor AS t12, ram AS t13, zasilacz AS t14, zastawy_komputerowe AS t15 WHERE t1.EAN_13=t2.EAN_13=t3.EAN_13=t4.EAN_13=t5.EAN_13=t6.EAN_13=t7.EAN_13=t8.EA
  2. _13=t9.EAN_13=t10.EAN_13=t11.EAN_13=t12.EAN_13=t13.EAN_13=t14.EAN_13=t15.EAN_13='$id'


Jestem przekonany, że taką baze idzie zbudować optymalniej winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.