Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Szukanie w całej bazie konkretnego ID
neo1986kk
post
Post #1





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

Ostrzeżenie: (0%)
-----


W mojej bazie danych, wszystkie ID muszą być unikalne, nie mogą powtórzyć się w żadnej tabeli, więc wymysliłem coś takiego:

  1.  
  2. SELECT t.TABLE_NAME
  3. FROM INFORMATION_SCHEMA.TABLES t
  4. INNER JOIN INFORMATION_SCHEMA.COLUMNS c ON t.TABLE_NAME = c.TABLE_NAME
  5. WHERE t.TABLE_SCHEMA = 'my_crm'
  6. AND c.COLUMN_NAME = 'ID'
  7. GROUP BY t.TABLE_NAME
  8. LIMIT 0 , 30
  9.  



i teraz dopiero php'em mogę sprawdzić


  1. foreach($tabele as $key=>$val){
  2. $q=query('Select ID from '.$val[0]);
  3. }


niestety to trwa zbyt długo i tu nasunęła mi się pewna myśl
Czy jest możliwość wyciągnięcia tego w jednym zapytaniu?

próbowałem w ten sposób:

  1. SELECT t.TABLE_NAME AS tn, c.COLUMN_NAME AS cn
  2. FROM INFORMATION_SCHEMA.TABLES t
  3. INNER JOIN INFORMATION_SCHEMA.COLUMNS c ON t.TABLE_NAME = c.TABLE_NAME
  4. WHERE t.TABLE_SCHEMA = 'my_crm'
  5. AND c.COLUMN_NAME = 'ID'
  6. AND `tn`.`cn`='.$wartość_szukanego_id.'
  7. GROUP BY t.TABLE_NAME
  8. LIMIT 0 , 30


ale SQL nie rozpoznaje `tn`.`cn` jako tabela.nazwa_kolumny sad.gif

Jakieś pomysły?

Ten post edytował neo1986kk 5.03.2015, 15:05:52
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




$q=query('Select ID from '.$val[0]).' where ID=szukaneID';
I juz tak dlugo nie bedzie trwalo


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
neo1986kk
post
Post #3





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

Ostrzeżenie: (0%)
-----


no zgadza się , ale jeszcze trochę za długo, ale skoro nie ma innej opcji to musi tak zostać.

A co sądzicie o tym, aby zebrać te tabele wszystkie w tablicę i skonstruować zapytanie w ten sposób


  1.  
  2. $tabele - to będzie tablica po zapytaniu
  3. przyklad:
  4.  
  5. $tabele=array('ludzie a', 'samochody b'....)
  6.  
  7. $tabele_columny=array('a.ID=$wartosc_szukanego_ID', 'b.ID=$wartosc_szukanego_ID);
  8.  


  1.  
  2. SELECT ID FROM JOIN(',', $tabele) WHERE JOIN('or', $table_columny)
  3.  


To by było jedno zapytanie wtedy


Jeszcze może dodam, że mi zależy bardziej, żeby nie znalazł tego ID, bo ja sobie wymyśliłem tutaj tak że jak znajdzie to zwraca FALSE;

a moze lepiej będzie na odwót, że jak nie znajdzie to zwraca TRUE

ale to i tak musi całą bazę przeszukać :/

Ten post edytował neo1986kk 5.03.2015, 15:28:07
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Jak chcesz miec jedno zapytanie to zaiteresuj sie UNION


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Pyton_000
post
Post #5





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


A możesz powiedzieć jaki jest powód tego że nie może się ID powtórzyć ?
Go to the top of the page
+Quote Post
neo1986kk
post
Post #6





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

Ostrzeżenie: (0%)
-----


powód jest bardzo prosty

mam na przyklad ludzi i samochody i chce zrobić system komentarzy

dodaję komentarz do ID 192809109595 i wiem ze to jest komentarz do czerwonego samochodu

pobieranie komentarzy też jest dużo prostrze bo jak jestem na stronie samochodu

to pobieram Select * from comments where item=$my_car_ID

jeśli do konkretnego człowieka Select * from comments where item=$man_ID
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




facepalmxd.gif

Powod moze i prosty, ale jednoczesnie glupi... zrob normalnie jak czlowiek i nie kombinuj z takimi bzdurami.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
neo1986kk
post
Post #8





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

Ostrzeżenie: (0%)
-----


No to w takim razie w jaki sposób ściągać komentarze?

zrobić dodatkową kolumnę, w której umieszczę gdzie ten komentarz ma być?

Coś w stylu:

ID | Komentarz | ID_miejsca_do_ktorego_ma_sie_dodac | ID_tabeli
Go to the top of the page
+Quote Post
Pyton_000
post
Post #9





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Taa, i zaraz zaczniesz się zastanawiać co zrobić bo Ci sie zakres BigInt skończy laugh.gif
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Schemat uniwersalny
ID | KOMENTARZ | TYPE (car, user, flower) | ID_Z_DANEJ_TABELI
No i rzecz jasna jeden klucz na pole TYPE i ID_Z_DANEJ_TABELI

Albo schemat specjalizowany, dla kazdej tabeli oddzielna tabela z komentami - ale to też srednio fajne.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
neo1986kk
post
Post #11





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

Ostrzeżenie: (0%)
-----


no juz sie powoli zaczynam zastanawiac, chyba jednak skorzystam z rady nospora i zrobie na ID autoincrement od 1

Cytat(nospor @ 5.03.2015, 15:50:37 ) *
No i rzecz jasna jeden klucz na pole TYPE i ID_Z_DANEJ_TABELI


Jak to jeden klucz na dwie kolumny?
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Normalnie. Klucz moze skladac sie z wielu kolumn a nie tylko z jednej

Mowiąc klucz mam na mysli INDEX a nie PRIMARY KEY


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
neo1986kk
post
Post #13





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

Ostrzeżenie: (0%)
-----


a dobra już rozumiem, dzięki za pomoc, zabieram się za poprawę bazy
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 11:02